userlib/dto/
organization_request.rs

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