journallib/dto/
homework_request.rs1use crate::enums::home_work_type::HomeWorkType;
2use chrono::NaiveDateTime;
3use common::entity::DtoReq;
4use common::enums::status::Status;
5use common::utils::serialize_option_naive_date;
6use serde::{Deserialize, Serialize};
7use uuid::Uuid;
8
9#[derive(Serialize, Deserialize, Debug, PartialEq, Clone)]
10#[serde(rename_all = "camelCase")]
11pub struct HomeworkRequest {
12 pub id: Option<Uuid>,
13 pub lesson: Option<Uuid>,
14 pub book: Option<Uuid>,
15 pub article: Option<Uuid>,
16 pub description: Option<String>,
17 pub status: Option<Status>,
18 pub teacher: Option<Uuid>,
19 pub file: Option<String>,
20 pub form: Option<Uuid>,
21 pub test: Option<Uuid>,
22 pub form_id: Option<Uuid>,
23 pub test_id: Option<Uuid>,
24 pub comment: Option<String>,
25 #[serde(default)]
26 #[serde(with = "serialize_option_naive_date")]
27 pub date: Option<NaiveDateTime>,
28 pub student: Option<Uuid>,
29 pub students: Option<Vec<Uuid>>,
30 #[serde(rename = "type")]
31 pub home_work_type: Option<HomeWorkType>,
32 pub name: Option<String>,
33 pub estimated_duration: Option<i32>,
34 pub student_visibility: Option<String>,
35 pub optional: Option<bool>,
36 pub due_lesson: Option<Uuid>,
37 #[serde(default)]
38 #[serde(with = "serialize_option_naive_date")]
39 pub due_date: Option<NaiveDateTime>,
40 pub lesson_plan_section: Option<serde_json::Value>,
41}
42
43impl DtoReq for HomeworkRequest {}