1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
use serde::Deserialize;


#[derive(Debug, Deserialize)]
#[serde(rename_all = "PascalCase")]
pub struct Grade {
    pub id: i64,
    pub lesson: GradesRedirect,
    pub subject: GradesRedirect,
    pub student: GradesRedirect,
    pub category: GradesRedirect,
    pub added_by: GradesRedirect,
    pub grade: String,
    pub date: String,
    pub add_date: String,
    pub semester: i64,
    pub is_constituent: bool,
    pub is_semester: bool,
    pub is_semester_proposition: bool,
    pub is_final: bool,
    pub is_final_proposition: bool,
    pub comments: Option<Vec<GradesRedirect>>,
    pub improvement: Option<GradesRedirect>,
    pub resit: Option<GradesRedirect>,
}

#[derive(Debug, Deserialize)]
#[serde(rename_all = "PascalCase")]
pub struct GradesRedirect {
    pub id: i32,
    pub url: String,
}



#[derive(Debug, Deserialize)]
#[serde(rename_all = "PascalCase")]
pub struct GradesUrl {
    pub url: String,
}

#[derive(Debug, Deserialize)]
#[serde(rename_all = "PascalCase")]
pub struct GradesResources {
    #[serde(rename = "Grades\\Averages")]
    pub grades_averages: GradesUrl,
    #[serde(rename = "Grades\\StudentsAverages")]
    pub grades_students_averages: GradesUrl,
    #[serde(rename = "Grades\\CategoriesAverages")]
    pub grades_categories_averages: GradesUrl,
    #[serde(rename = "Grades\\Categories")]
    pub grades_categories: GradesUrl,
    #[serde(rename = "Grades\\Comments")]
    pub grades_comments: GradesUrl,
    #[serde(rename = "Grades\\Scales")]
    pub grades_scales: GradesUrl,
    #[serde(rename = "Grades\\Types")]
    pub grades_types: GradesUrl,
    #[serde(rename = "Grades\\UnpreparednessPerSemesterAndSubject")]
    pub grades_unpreparedness_per_semester_and_subject: GradesUrl,
    #[serde(rename = "..")]
    pub root: GradesUrl,
}

#[derive(Debug, Deserialize)]
#[serde(rename_all = "PascalCase")]
pub struct ResponseGrades{
    pub grades: Vec<Grade>,
    pub resources: GradesResources,
    pub url: String,
}

#[derive(Debug, Deserialize)]
#[serde(rename_all = "PascalCase")]
pub struct GradeColor {
    pub id: i64,
    pub url: String,
}

#[derive(Debug, Deserialize)]
#[serde(rename_all = "PascalCase")]
pub struct GradeCategory {
    pub id: i64,
    pub color: GradeColor,
    pub name: String,
    pub adults_extramural: bool,
    pub adults_daily: bool,
    pub standard: bool,
    pub is_read_only: String,
    pub count_to_the_average: bool,
    pub block_any_grades: bool,
    pub obligation_to_perform: bool,
}

#[derive(Debug, Deserialize)]
#[serde(rename_all = "PascalCase")]
pub struct GradesCategoryResources{
    #[serde(rename = "..")]
    pub root: GradesUrl,
}

#[derive(Debug, Deserialize)]
#[serde(rename_all = "PascalCase")]
pub struct GradeComment {
    pub id: i32,
    pub added_by: GradeDetails,
    pub grade: GradeDetails,
    pub text: String,
}

#[derive(Debug, Deserialize)]
#[serde(rename_all = "PascalCase")]
pub struct GradeDetails {
    pub id: i64,
    pub url: String,
}

#[derive(Debug, Deserialize)]
#[serde(rename_all = "PascalCase")]
pub struct ResponseGradesCategories{
    pub category: GradeCategory,
    pub resources: GradesCategoryResources,
}

#[derive(Debug, Deserialize)]
#[serde(rename_all = "PascalCase")]
pub struct ResponseGradesComments{
    pub comment: Option<GradeComment>,
    pub resources: GradesCategoryResources,
    pub url: String,

}