userlib/dto/
organization_response.rs1use chrono::NaiveDateTime;
2use common::entity::DtoResp;
3use common::enums::grading_system_type::GradingSystemType;
4use common::enums::org_type::OrgType;
5use common::enums::status::Status;
6use common::enums::student_chat_permission::StudentChatPermission;
7use serde::{Deserialize, Serialize};
8use uuid::Uuid;
9
10use crate::jsonb::special_subject::SpecialSubject;
11
12#[derive(Serialize, Deserialize, Debug, PartialEq, Clone)]
13#[serde(rename_all = "camelCase")]
14pub struct OrganizationResponse {
15 pub name: String,
16 pub full_name: String,
17 #[serde(skip_serializing_if = "Option::is_none")]
18 pub email: Option<String>,
19 #[serde(skip_serializing_if = "Option::is_none")]
20 pub phone: Option<String>,
21 #[serde(skip_serializing_if = "Option::is_none")]
22 pub slogan: Option<String>,
23 #[serde(skip_serializing_if = "Option::is_none")]
24 pub code: Option<String>,
25 #[serde(skip_serializing_if = "Option::is_none")]
26 pub fax_number: Option<String>,
27 #[serde(skip_serializing_if = "Option::is_none")]
28 pub internet_site: Option<String>,
29 #[serde(skip_serializing_if = "Option::is_none")]
30 pub contact: Option<String>,
31 #[serde(skip_serializing_if = "Option::is_none")]
32 pub region: Option<i32>,
33 #[serde(skip_serializing_if = "Option::is_none")]
34 pub date_deactivate: Option<NaiveDateTime>,
35 pub id: Uuid,
36 #[serde(skip_serializing_if = "Option::is_none")]
37 pub manager: Option<Uuid>,
38 #[serde(skip_serializing_if = "Option::is_none")]
39 pub parent_org: Option<Uuid>,
40 #[serde(skip_serializing_if = "Option::is_none")]
41 pub educational_programm_type: Option<Uuid>,
42 #[serde(skip_serializing_if = "Option::is_none")]
43 pub base_locale: Option<String>,
44 pub time_zone: String,
45 #[serde(skip_serializing_if = "Option::is_none")]
46 pub logo_path: Option<String>,
47 pub org_type: OrgType,
48 pub status: Status,
49 #[serde(skip_serializing_if = "Option::is_none")]
50 #[serde(rename = "gradingSystem")]
51 pub grading_system_name: Option<GradingSystemType>,
52 pub children: Vec<OrganizationResponse>,
53 #[serde(skip_serializing_if = "Option::is_none")]
54 pub academic_year: Option<Uuid>,
55 #[serde(skip_serializing_if = "Option::is_none")]
56 pub allowed_countries: Option<Vec<String>>,
57 pub student_chat_status: StudentChatPermission,
58 #[serde(skip_serializing_if = "Option::is_none")]
59 pub description: Option<String>,
60 #[serde(skip_serializing_if = "Option::is_none")]
61 pub special_subjects: Option<Vec<SpecialSubject>>,
62 #[serde(skip_serializing_if = "Option::is_none")]
63 pub longitude: Option<f64>,
64 #[serde(skip_serializing_if = "Option::is_none")]
65 pub latitude: Option<f64>,
66 pub student_files_status: StudentChatPermission,
67 pub student_projects_status: StudentChatPermission,
68 pub ai_enabled: bool,
69 pub social_enabled: bool,
70 pub teacher_mfa_enforced: bool,
71 pub student_mfa_enforced: bool,
72 pub parent_mfa_enforced: bool,
73}
74
75impl DtoResp for OrganizationResponse {}