journallib/dto/
homework_response.rs1use chrono::NaiveDateTime;
2use common::entity::DtoResp;
3use common::enums::status::Status;
4use common::utils::serialize_option_naive_date;
5use serde::{Deserialize, Serialize};
6use uuid::Uuid;
7
8use crate::dto::homework_resp_response::HomeworkRespResponse;
9use crate::enums::home_work_type::HomeWorkType;
10
11#[derive(Serialize, Deserialize, Debug, Clone)]
12#[serde(rename_all = "camelCase")]
13pub struct HomeworkResponseDto {
14 pub id: Uuid,
15 #[serde(skip_serializing_if = "Option::is_none")]
16 pub ver: Option<i32>,
17 #[serde(skip_serializing_if = "Option::is_none")]
18 pub lesson: Option<Uuid>,
19 #[serde(skip_serializing_if = "Option::is_none")]
20 pub book: Option<Uuid>,
21 #[serde(skip_serializing_if = "Option::is_none")]
22 pub article: Option<Uuid>,
23 #[serde(skip_serializing_if = "Option::is_none")]
24 pub description: Option<String>,
25 #[serde(skip_serializing_if = "Option::is_none")]
26 pub status: Option<Status>,
27 #[serde(skip_serializing_if = "Option::is_none")]
28 pub teacher: Option<Uuid>,
29 #[serde(skip_serializing_if = "Option::is_none")]
30 pub file: Option<String>,
31 #[serde(skip_serializing_if = "Option::is_none")]
32 pub form: Option<Uuid>,
33 #[serde(skip_serializing_if = "Option::is_none")]
34 pub test: Option<Uuid>,
35 #[serde(skip_serializing_if = "Option::is_none")]
36 pub form_id: Option<Uuid>,
37 #[serde(skip_serializing_if = "Option::is_none")]
38 pub test_id: Option<Uuid>,
39 #[serde(skip_serializing_if = "Option::is_none")]
40 pub comment: Option<String>,
41 #[serde(default)]
42 #[serde(with = "serialize_option_naive_date")]
43 #[serde(skip_serializing_if = "Option::is_none")]
44 pub date: Option<NaiveDateTime>,
45 #[serde(skip_serializing_if = "Option::is_none")]
46 pub student: Option<Uuid>,
47 #[serde(skip_serializing_if = "Option::is_none")]
48 pub students: Option<Vec<Uuid>>,
49 #[serde(skip_serializing_if = "Option::is_none")]
50 #[serde(rename = "type")]
51 pub home_work_type: Option<HomeWorkType>,
52 #[serde(skip_serializing_if = "Option::is_none")]
53 pub name: Option<String>,
54 pub homework_responses: Vec<HomeworkRespResponse>,
55 #[serde(skip_serializing_if = "Option::is_none")]
56 pub estimated_duration: Option<i32>,
57 #[serde(skip_serializing_if = "Option::is_none")]
58 pub student_visibility: Option<String>,
59 #[serde(skip_serializing_if = "Option::is_none")]
60 pub optional: Option<bool>,
61 #[serde(skip_serializing_if = "Option::is_none")]
62 pub due_lesson: Option<Uuid>,
63 #[serde(default)]
64 #[serde(skip_serializing_if = "Option::is_none")]
65 #[serde(with = "serialize_option_naive_date")]
66 pub due_date: Option<NaiveDateTime>,
67 #[serde(skip_serializing_if = "Option::is_none")]
68 pub lesson_plan_section: Option<serde_json::Value>,
69}
70
71impl DtoResp for HomeworkResponseDto {}