use chrono::{DateTime, FixedOffset}; use serde::{Deserialize, Serialize}; use crate::{Hour, StdType, StdTypeNullable}; #[derive(Debug, Clone, Serialize, Deserialize)] #[serde(rename_all = "PascalCase")] pub struct StudentAbsenceOverviewResponse { pub percentage_threshold: f64, //TODO: cutom type (u8) pub absences: Vec, pub absences_per_subject: Option>, } #[derive(Debug, Clone, Serialize, Deserialize)] #[serde(rename_all = "PascalCase")] pub struct AbsenceDay { pub date: chrono::DateTime, pub unsolved: u16, pub ok: u16, pub missed: u16, pub late: u16, pub soon: u16, pub school: u16, pub distance_teaching: u16, } #[derive(Debug, Clone, Serialize, Deserialize)] #[serde(rename_all = "PascalCase")] pub struct SubjectAbsence { pub subject_name: String, pub lessons_count: u16, pub base: u16, pub late: u16, pub soon: u16, pub school: u16, pub distance_teaching: u16, } #[derive(Debug, Clone, Serialize, Deserialize)] #[serde(rename_all = "PascalCase")] pub struct SubjectAbsenceOverviewResponse { pub percentage_threshold: f64, pub absences: Option>, pub absences_per_subject: Option>, } #[derive(Debug, Clone, Serialize, Deserialize)] #[serde(rename_all = "PascalCase")] pub struct StudentTimetableAbsenceResponse { pub student: Option, pub days: Vec, pub absent_type_options: Vec, } #[derive(Debug, Clone, Serialize, Deserialize)] #[serde(rename_all = "PascalCase")] pub struct AbsenceTypeOption { pub absent_type: AbsentType, pub absent_kind_enabled: bool, pub absent_kind_required: bool, pub absent_note_enabled: bool, pub next_absent_type: AbsentType, pub absent_kinds: Vec, } #[derive(Debug, Clone, Serialize, Deserialize)] #[serde(rename_all = "PascalCase")] pub enum AbsentType { Absent, AbsentLate, AbsentMiss, AbsentOk, AbsentSchool, AbsentSoon, DistanceTeaching, NoAbsent, } type StudentInfo = StdTypeNullable; type AbsenceKind = StdType; #[derive(Debug, Clone, Serialize, Deserialize)] #[serde(rename_all = "PascalCase")] pub struct AbsenceSubject { pub id: String, pub abbrev: Option, pub name: String, } #[derive(Debug, Clone, Serialize, Deserialize)] #[serde(rename_all = "PascalCase")] pub struct AbsenceDayResponse { pub date: DateTime, pub absences: Vec, } #[derive(Debug, Clone, Serialize, Deserialize)] #[serde(rename_all = "PascalCase")] pub struct Absence { pub minutes: i64, pub absent_type: AbsentType, pub hour_id: String, pub start: i64, pub duration: i64, pub hour_index: Option, pub absent_kind_id: Option, pub notice: Option, pub student_id: Option, pub subject: Option, } #[derive(Debug, Clone, Serialize, Deserialize)] #[serde(rename_all = "PascalCase")] pub struct ExcuseAbsenceResponse { pub absences: Vec, pub hours: Vec, } #[derive(Debug, Clone, Serialize, Deserialize)] #[serde(rename_all = "PascalCase")] pub struct AbsenceRecord { pub minutes: i64, pub absent_type: AbsentType, pub hour_id: Option, pub date: DateTime, pub start: i64, pub duration: i64, pub absent_kind_id: Option, pub notice: Option, pub student_id: Option, pub apology_id: Option, }