diff --git a/src/lib.rs b/src/lib.rs index 0deb3e4..53fd30f 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -9,6 +9,7 @@ mod gdpr; mod homework; //TDOS //marking mod marks; +mod modules; mod payments; mod semester; mod stdtype; @@ -31,11 +32,11 @@ pub use gdpr::{ }; pub use homework::{HomeworkList, HomeworkListItem}; pub use marks::{Mark, MarkConfirmationStatus, Marks, SubjectMarks}; +pub use modules::*; pub use payments::*; pub use semester::{ CertificateTerm, CertificateTerms, FinalMark, PedagogicalMeasure, PedagogicalMeasures, }; -pub use stdtype::*; pub use stdtype::{ Room, RoomSet, SchoolClass, SchoolClassSet, StdClassGroup, StdType, StdTypeNullable, Student, Teacher, TeacherSet, TimetableStudent, @@ -46,4 +47,4 @@ pub use substitutions::{ }; pub use teaching::{Lesson, Teaching, TeachingTheme}; pub use timetable::*; -pub use user::{Module, UserInfo, UserInfoStudent, UserType, SchoolType}; +pub use user::{SchoolType, UserInfo, UserInfoStudent, UserType}; diff --git a/src/modules.rs b/src/modules.rs new file mode 100644 index 0000000..d1e9677 --- /dev/null +++ b/src/modules.rs @@ -0,0 +1,192 @@ +use serde::{Deserialize, Serialize}; + +#[derive(Debug, Clone, Serialize, Deserialize)] +#[serde(tag = "Module")] +pub enum Module { + Absence { rights: Vec }, + AccessSystem { rights: Vec }, + Application { rights: Vec }, + Campaign { rights: Vec }, + Classbook { rights: Vec }, + Emergency { rights: Vec }, + Events { rights: Vec }, + Gdpr { rights: Vec }, + Homeworks { rights: Vec }, + Komens { rights: Vec }, + Marking { rights: Vec }, + Marks { rights: Vec }, + Payments { rights: Vec }, + Semester { rights: Vec }, + Subjects { rights: Vec }, + Substitutions { rights: Vec }, + Teaching { rights: Vec }, + Timetable { rights: Vec }, + Unknown { rights: Vec }, + UserAccount { rights: Vec }, + WebBased { rights: Vec }, +} + +#[derive(Debug, Clone, Serialize, Deserialize)] +pub enum AbsenceRights { + ShowAbsence, + ShowAbsencePercentage, + #[serde(other)] + Unknown, +} + +#[derive(Debug, Clone, Serialize, Deserialize)] +pub enum AccessSystemRights { + #[serde(other)] + Unknown, +} + +#[derive(Debug, Clone, Serialize, Deserialize)] +pub enum ApplicationRights { + #[serde(other)] + Unknown, +} + +#[derive(Debug, Clone, Serialize, Deserialize)] +pub enum CampaignRights { + ShowCampaign, + #[serde(other)] + Unknown, +} + +#[derive(Debug, Clone, Serialize, Deserialize)] +pub enum ClassbookRights { + CanExcuseAbsence, + EditClassBook, + ShowClassBook, + #[serde(other)] + Unknown, +} + +#[derive(Debug, Clone, Serialize, Deserialize)] +pub enum EmergencyRights { + CanAccessEmergency, + CanBeEmergencyParticipant, + CanManageEmergencies, + CanOverseeEmergencyParticipants, + #[serde(other)] + Unknown, +} + +#[derive(Debug, Clone, Serialize, Deserialize)] +pub enum EventsRights { + ShowEvents, + #[serde(other)] + Unknown, +} + +#[derive(Debug, Clone, Serialize, Deserialize)] +pub enum GdprRights { + ShowChildConsents, + ShowCommissioners, + ShowOwnConsents, + #[serde(other)] + Unknown, +} + +#[derive(Debug, Clone, Serialize, Deserialize)] +pub enum HomeworksRights { + ShowHomeworks, + #[serde(other)] + Unknown, +} + +#[derive(Debug, Clone, Serialize, Deserialize)] +pub enum KomensRights { + SendAttachments, + SendMessageAsDirector, + SendMessages, + ShowApologyMessages, + ShowNoticeBoardMessages, + ShowRatingDetails, + ShowRatingMessage, + ShowReceivedMessages, + ShowSentMessages, + #[serde(other)] + Unknown, +} + +#[derive(Debug, Clone, Serialize, Deserialize)] +pub enum MarkingRights { + EditMarks, + ShowMarking, + #[serde(other)] + Unknown, +} + +#[derive(Debug, Clone, Serialize, Deserialize)] +pub enum MarksRights { + CanConfirmClassification, + PredictMarks, + ShowFinalMarks, + ShowManners, + ShowMarks, + #[serde(other)] + Unknown, +} + +#[derive(Debug, Clone, Serialize, Deserialize)] +pub enum PaymentsRights { + ClassFundEnabled, + ClassFundPaymentsEnabled, + RegularPaymentsEnabled, + ShowClassFundDetails, + #[serde(other)] + Unknown, +} + +#[derive(Debug, Clone, Serialize, Deserialize)] +pub enum SemesterRights { + #[serde(other)] + Unknown, +} + +#[derive(Debug, Clone, Serialize, Deserialize)] +pub enum SubjectsRights { + ShowSubjectThemes, + ShowSubjects, + #[serde(other)] + Unknown, +} + +#[derive(Debug, Clone, Serialize, Deserialize)] +pub enum SubstitutionsRights { + ShowSubstitutions, + #[serde(other)] + Unknown, +} + +#[derive(Debug, Clone, Serialize, Deserialize)] +pub enum TeachingRights { + #[serde(other)] + Unknown, +} + +#[derive(Debug, Clone, Serialize, Deserialize)] +pub enum TimetableRights { + ShowTimetable, + #[serde(other)] + Unknown, +} + +#[derive(Debug, Clone, Serialize, Deserialize)] +pub enum UnknownRights { + #[serde(other)] + Unknown, +} + +#[derive(Debug, Clone, Serialize, Deserialize)] +pub enum UserAccountRights { + #[serde(other)] + Unknown, +} + +#[derive(Debug, Clone, Serialize, Deserialize)] +pub enum WebBasedRights { + #[serde(other)] + Unknown, +} diff --git a/src/user.rs b/src/user.rs index f9007c7..06e3949 100644 --- a/src/user.rs +++ b/src/user.rs @@ -2,7 +2,7 @@ use serde::{Deserialize, Serialize}; use serde_json::Value; use std::collections::HashMap; -use crate::SchoolClass; +use crate::{Module, SchoolClass}; #[derive(Debug, Clone, Serialize, Deserialize)] #[serde(rename_all = "PascalCase")] @@ -33,13 +33,6 @@ pub enum UserType { Teacher, } -#[derive(Debug, Clone, Serialize, Deserialize)] -#[serde(rename_all = "PascalCase")] -pub struct Module { - pub module: String, //Make an Enum "absence", "accesssystem", "application", "campaign", "classbook", "emergency", "events", "gdpr", "homeworks", "komens", "marking", "marks", "payments", "semester", "subjects", "substitutions", "teaching", "timetable", "unknown", "user_account", "web_based" - pub rights: Vec, //Make enum "CanAccessEmergency", "CanBeEmergencyParticipant", "CanConfirmClassification", "CanExcuseAbsence", "CanManageEmergencies", "CanOverseeEmergencyParticipants", "ClassFundEnabled", "ClassFundPaymentsEnabled", "EditClassBook", "EditMarks", "PredictMarks", "RegularPaymentsEnabled", "SendAttachments", "SendMessageAsDirector", "SendMessages", "ShowAbsence", "ShowAbsencePercentage", "ShowApologyMessages", "ShowCampaign", "ShowChildConsents", "ShowClassBook", "ShowClassFundDetails", "ShowCommissioners", "ShowEvents", "ShowFinalMarks", "ShowHomeworks", "ShowManners", "ShowMarking", "ShowMarks", "ShowNoticeBoardMessages", "ShowOwnConsents", "ShowRatingDetails", "ShowRatingMessage", "ShowReceivedMessages", "ShowSentMessages", "ShowSubjectThemes", "ShowSubjects", "ShowSubstitutions", "ShowTimetable", "Unknown" -} - #[derive(Debug, Clone, Serialize, Deserialize)] #[serde(rename_all = "PascalCase")] pub struct UserInfoStudent {