userlib/dto/
user_response.rs

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