userlib/dto/
organization_request.rs1use chrono::NaiveDateTime;
2use common::entity::DtoReq;
3use common::enums::grading_system_type::GradingSystemType;
4use common::enums::org_type::OrgType;
5use common::enums::student_chat_permission::StudentChatPermission;
6use serde::{Deserialize, Serialize};
7use uuid::Uuid;
8
9use crate::jsonb::address::Address;
10use crate::jsonb::special_subject::SpecialSubject;
11
12#[derive(Serialize, Deserialize, Debug)]
13#[serde(rename_all = "camelCase")]
14pub struct OrganizationRequest {
15 pub id: Option<Uuid>,
16 pub name: String,
17 pub full_name: String,
18 #[serde(skip_serializing_if = "Option::is_none")]
19 pub email: Option<String>,
20 #[serde(skip_serializing_if = "Option::is_none")]
21 pub phone: Option<String>,
22 #[serde(skip_serializing_if = "Option::is_none")]
23 pub slogan: Option<String>,
24 #[serde(skip_serializing_if = "Option::is_none")]
25 pub code: Option<String>,
26 #[serde(skip_serializing_if = "Option::is_none")]
27 pub fax_number: Option<String>,
28 #[serde(skip_serializing_if = "Option::is_none")]
29 pub internet_site: Option<String>,
30 #[serde(skip_serializing_if = "Option::is_none")]
31 pub contact: Option<String>,
32 #[serde(skip_serializing_if = "Option::is_none")]
33 pub region: Option<i32>,
34 #[serde(skip_serializing_if = "Option::is_none")]
35 pub date_deactivate: Option<NaiveDateTime>,
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 #[serde(skip_serializing_if = "Option::is_none")]
48 pub org_type: Option<OrgType>,
49 #[serde(skip_serializing_if = "Option::is_none")]
50 #[serde(rename = "gradingSystem")]
51 pub grading_system_name: Option<GradingSystemType>,
52 #[serde(skip_serializing_if = "Option::is_none")]
53 pub addresses: Option<Vec<Address>>,
54 pub academic_year: Option<Uuid>,
55 #[serde(skip_serializing_if = "Option::is_none")]
56 pub allowed_countries: Option<Vec<String>>,
57 #[serde(skip_serializing_if = "Option::is_none")]
58 pub student_chat_status: Option<StudentChatPermission>,
59 pub description: Option<String>,
60 pub special_subjects: Option<Vec<SpecialSubject>>,
61 pub student_files_status: Option<StudentChatPermission>,
62 pub student_projects_status: Option<StudentChatPermission>,
63 pub ai_enabled: Option<bool>,
64 pub social_enabled: Option<bool>,
65 pub teacher_mfa_enforced: Option<bool>,
66 pub student_mfa_enforced: Option<bool>,
67 pub parent_mfa_enforced: Option<bool>,
68}
69
70impl DtoReq for OrganizationRequest {}