userlib/dto/
organization_response.rs

1use 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 {}