journallib/dto/
homework_response.rs

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