journallib/dto/
lesson_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_response::HomeworkResponseDto;
9use crate::dto::lesson_evaluation_response::LessonEvaluationResponse;
10use crate::dto::mark_response::MarkResponse;
11use crate::dto::scenario_section::ScenarioSections;
12use crate::enums::lesson_type::LessonType;
13use crate::jsonb::lesson_action::LessonAction;
14
15#[derive(Serialize, Deserialize, Debug, Clone)]
16#[serde(rename_all = "camelCase")]
17pub struct LessonResponse {
18    pub id: Uuid,
19    #[serde(skip_serializing_if = "Option::is_none")]
20    pub ver: Option<i32>,
21    #[serde(skip_serializing_if = "Option::is_none")]
22    pub comment: Option<String>,
23    #[serde(skip_serializing_if = "Option::is_none")]
24    pub importance_default: Option<i32>,
25    #[serde(rename = "type")]
26    #[serde(skip_serializing_if = "Option::is_none")]
27    pub lesson_type: Option<LessonType>,
28    #[serde(skip_serializing_if = "Option::is_none")]
29    pub curriculum: Option<Uuid>,
30    #[serde(skip_serializing_if = "Option::is_none")]
31    pub test: Option<Uuid>,
32    #[serde(default)]
33    #[serde(with = "serialize_option_naive_date")]
34    #[serde(skip_serializing_if = "Option::is_none")]
35    pub date: Option<NaiveDateTime>,
36    pub journal: Uuid,
37    #[serde(skip_serializing_if = "Option::is_none")]
38    pub status: Option<Status>,
39    #[serde(skip_serializing_if = "Option::is_none")]
40    #[serde(rename = "inSchedule")]
41    pub in_schedule: Option<String>,
42    #[serde(skip_serializing_if = "Option::is_none")]
43    pub room: Option<Uuid>,
44    pub marks: Vec<MarkResponse>,
45    pub homeworks: Vec<HomeworkResponseDto>,
46    #[serde(skip_serializing_if = "Option::is_none")]
47    pub evaluation: Option<LessonEvaluationResponse>,
48    #[serde(skip_serializing_if = "Option::is_none")]
49    pub slot: Option<Uuid>,
50    #[serde(skip_serializing_if = "Option::is_none")]
51    pub tasks: Option<serde_json::Value>,
52    #[serde(skip_serializing_if = "Option::is_none")]
53    pub scenario_sections: Option<ScenarioSections>,
54    #[serde(skip_serializing_if = "Option::is_none")]
55    pub actions: Option<Vec<LessonAction>>,
56    pub lesson_status: String,
57    #[serde(skip_serializing_if = "Option::is_none")]
58    pub curriculum_id: Option<Uuid>,
59}
60
61impl DtoResp for LessonResponse {}