journallib/dto/
homework_request.rs

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