use serde::{Deserialize, Serialize};
use crate::protocol::{Array, Date, Object};
#[derive(Deserialize, Debug, Clone)]
pub(crate) struct InstanceParameters {
#[serde(rename = "General")]
pub(crate) general: GeneralParameters,
}
#[derive(Deserialize, Debug, Clone)]
pub(crate) struct GeneralParameters {
#[serde(rename = "versionPN")]
pub(crate) version: String,
#[serde(rename = "NomEtablissementConnexion")]
pub(crate) label: String,
#[serde(rename = "PremierLundi")]
pub(crate) first_monday: Date,
#[serde(rename = "PremiereDate")]
pub(crate) first_day: Date,
#[serde(rename = "DerniereDate")]
pub(crate) last_day: Date,
#[serde(rename = "PlacesParJour")]
pub(crate) places_per_day: u32,
#[serde(rename = "PlacesParHeure")]
pub(crate) places_per_hour: u32,
#[serde(rename = "ListeHeures")]
pub(crate) start_hours: Array<Hour>,
#[serde(rename = "ListeHeuresFin")]
pub(crate) _end_hours: Array<Hour>,
#[serde(rename = "ListePeriodes")]
pub(crate) periods: Vec<Period>,
}
#[derive(Deserialize, Debug, Clone)]
pub(crate) struct Hour {
#[serde(rename = "G")]
pub(crate) id: u32,
#[serde(rename = "L")]
pub(crate) label: String,
}
#[derive(Deserialize, Debug)]
pub(crate) struct UserParameters {
#[serde(rename = "ressource")]
pub(crate) resources: Resources,
#[serde(rename = "listeInformationsEtablissements")]
pub(crate) _institutions: Array<Institution>,
}
#[derive(Deserialize, Debug)]
pub(crate) struct Resources {
#[serde(rename = "N")]
pub(crate) id: String,
#[serde(rename = "L")]
pub(crate) label: String,
#[serde(rename = "G")]
pub(crate) group: u32,
#[serde(rename = "classeDEleve")]
pub(crate) _class: Class,
#[serde(rename = "listeOngletsPourPeriodes")]
pub(crate) tabs_periods: Array<TabPeriods>,
}
#[derive(Deserialize, Debug)]
pub(crate) struct Class {
#[serde(rename = "L")]
pub(crate) _name: String,
}
#[derive(Deserialize, Debug)]
pub(crate) struct Institution {
#[serde(rename = "L")]
pub(crate) _name: String,
}
#[derive(Deserialize, Debug)]
pub(crate) struct TabPeriods {
#[serde(rename = "G")]
pub(crate) id: u32,
#[serde(rename = "listePeriodes")]
pub(crate) periods: Array<Period>,
#[serde(rename = "periodeParDefaut")]
pub(crate) default: Object<Period>,
}
#[derive(Deserialize, Serialize, Debug, Clone)]
pub(crate) struct Period {
#[serde(rename = "N")]
pub(crate) id: Option<String>,
#[serde(rename = "L")]
pub(crate) name: String,
}