userlib/dto/
user_response.rs1use chrono::NaiveDateTime;
2use common::entity::DtoResp;
3use serde::{Deserialize, Serialize};
4use uuid::Uuid;
5
6use crate::jsonb::court_order::CourtOrder;
7use crate::jsonb::emergency_contacts::EmergencyDetails;
8use crate::jsonb::mfa::Mfa;
9use crate::jsonb::visa_info::VisaInfo;
10use common::enums::gender::Gender;
11use common::enums::status::Status;
12
13#[derive(Serialize, Deserialize, Debug, PartialEq, Clone)]
14#[serde(rename_all = "camelCase")]
15pub struct UserResponse {
16 pub first_name: String,
17 #[serde(skip_serializing_if = "Option::is_none")]
18 pub middle_name: Option<String>,
19 pub last_name: String,
20 #[serde(skip_serializing_if = "Option::is_none")]
21 pub nickname: Option<String>,
22 #[serde(skip_serializing_if = "Option::is_none")]
23 pub birthday: Option<NaiveDateTime>,
24 pub email: String,
25 #[serde(skip_serializing_if = "Option::is_none")]
26 pub phone: Option<String>,
27 #[serde(skip_serializing_if = "Option::is_none")]
28 pub site: Option<String>,
29 #[serde(skip_serializing_if = "Option::is_none")]
30 pub last_online: Option<NaiveDateTime>,
31 #[serde(skip_serializing_if = "Option::is_none")]
32 pub last_offline: Option<NaiveDateTime>,
33 #[serde(skip_serializing_if = "Option::is_none")]
34 pub language: Option<String>,
35 pub is_first_login: bool,
36 pub id: Uuid,
37 #[serde(skip_serializing_if = "Option::is_none")]
38 pub avatar_path: Option<String>,
39 pub status: Status,
40 pub gender: Gender,
41 #[serde(skip_serializing_if = "Option::is_none")]
42 pub time_zone: Option<String>,
43 pub bad_attempts: i32,
44 #[serde(skip_serializing_if = "Option::is_none")]
45 pub title: Option<String>,
46 #[serde(skip_serializing_if = "Option::is_none")]
47 pub online_status: Option<String>,
48 #[serde(skip_serializing_if = "Option::is_none")]
49 pub mfa: Option<Mfa>,
50 #[serde(skip_serializing_if = "Option::is_none")]
51 pub emergency_contacts: Option<Vec<EmergencyDetails>>,
52 #[serde(skip_serializing_if = "Option::is_none")]
53 pub preferred_name: Option<String>,
54 #[serde(skip_serializing_if = "Option::is_none")]
55 pub co_enrolment: Option<bool>,
56 #[serde(skip_serializing_if = "Option::is_none")]
57 pub visa_information: Option<VisaInfo>,
58 #[serde(skip_serializing_if = "Option::is_none")]
59 pub orders: Option<Vec<CourtOrder>>,
60 #[serde(skip_serializing_if = "Option::is_none")]
61 pub block_reason: Option<String>,
62}
63impl DtoResp for UserResponse {}