journallib/dto/
lesson_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_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 {}