journallib/dto/lesson_response_with_mark_and_homework.rs
1// use chrono::NaiveDateTime;
2// use common::enums::lesson_type::LessonType;
3// use common::enums::status::Status;
4// use common::utils::serialize_option_naive_date;
5// use serde::{Deserialize, Serialize};
6// use uuid::Uuid;
7//
8// use crate::dto::homework_response::HomeworkResponse;
9// use crate::dto::mark_response::MarkResponse;
10// use crate::dto::scenario_section::ScenarioSections;
11// use crate::entity::lesson::Lesson;
12//
13// #[derive(Serialize, Deserialize)]
14// #[serde(rename_all = "camelCase")]
15// pub struct LessonResponseWithMarkAndHomework {
16// pub id: Uuid,
17// #[serde(skip_serializing_if = "Option::is_none")]
18// pub ver: Option<i32>,
19// #[serde(skip_serializing_if = "Option::is_none")]
20// pub comment: Option<String>,
21// #[serde(skip_serializing_if = "Option::is_none")]
22// pub importance_default: Option<i32>,
23// #[serde(skip_serializing_if = "Option::is_none")]
24// #[serde(rename = "type")]
25// pub lesson_type: Option<LessonType>,
26// #[serde(skip_serializing_if = "Option::is_none")]
27// pub curriculum: Option<Uuid>,
28// #[serde(skip_serializing_if = "Option::is_none")]
29// pub test: Option<Uuid>,
30// #[serde(default)]
31// #[serde(with = "serialize_option_naive_date")]
32// #[serde(skip_serializing_if = "Option::is_none")]
33// pub date: Option<NaiveDateTime>,
34// #[serde(skip_serializing_if = "Option::is_none")]
35// pub journal: Option<Uuid>,
36// #[serde(skip_serializing_if = "Option::is_none")]
37// pub status: Option<Status>,
38// #[serde(skip_serializing_if = "Option::is_none")]
39// pub in_schedule: Option<String>,
40// #[serde(skip_serializing_if = "Option::is_none")]
41// pub room: Option<Uuid>,
42// pub marks: Vec<MarkResponse>,
43// pub homeworks: Vec<HomeworkResponse>,
44// #[serde(skip_serializing_if = "Option::is_none")]
45// pub slot: Option<Uuid>,
46// #[serde(skip_serializing_if = "Option::is_none")]
47// pub tasks: Option<serde_json::Value>,
48// #[serde(skip_serializing_if = "Option::is_none")]
49// pub scenario_sections: Option<ScenarioSections>,
50// #[serde(skip_serializing_if = "Option::is_none")]
51// pub actions: Option<Vec<serde_json::Value>>,
52// pub lesson_status: String,
53// }
54//
55// impl LessonResponseWithMarkAndHomework {
56// pub fn make(
57// lesson: Lesson,
58// marks: Vec<MarkResponse>,
59// homeworks: Vec<HomeworkResponse>,
60// ) -> LessonResponseWithMarkAndHomework {
61// LessonResponseWithMarkAndHomework {
62// id: lesson.uuid,
63// ver: lesson.ver,
64// comment: lesson.comment,
65// importance_default: lesson.importance_default,
66// lesson_type: lesson.lesson_type,
67// curriculum: lesson.curriculum,
68// test: lesson.test,
69// date: lesson.date,
70// journal: lesson.journal,
71// status: lesson.status,
72// in_schedule: lesson.in_schedule,
73// room: lesson.room,
74// marks,
75// homeworks,
76// slot: lesson.slot,
77// tasks: lesson.tasks,
78// scenario_sections: lesson.scenario_sections,
79// actions: lesson.actions,
80// lesson_status: lesson.lesson_status,
81// }
82// }
83// }