use serde::{self, Deserialize, Serialize};
#[derive(Serialize, Deserialize, Debug)]
pub struct Params {
#[serde(rename = "courseid")]
pub r#courseid: Option<i64>,
#[serde(rename = "userid")]
pub r#userid: Option<i64>,
#[serde(rename = "groupid")]
pub r#groupid: Option<i64>,
}
#[derive(Serialize, Deserialize, Debug)]
pub struct ReturnsUsergradesItemGradeitemsItem {
#[serde(rename = "id")]
pub r#id: Option<i64>,
#[serde(rename = "itemname")]
pub r#itemname: Option<String>,
#[serde(rename = "itemtype")]
pub r#itemtype: Option<String>,
#[serde(rename = "itemmodule")]
pub r#itemmodule: Option<String>,
#[serde(rename = "iteminstance")]
pub r#iteminstance: Option<i64>,
#[serde(rename = "itemnumber")]
pub r#itemnumber: Option<i64>,
#[serde(rename = "idnumber")]
pub r#idnumber: Option<String>,
#[serde(rename = "categoryid")]
pub r#categoryid: Option<i64>,
#[serde(rename = "outcomeid")]
pub r#outcomeid: Option<i64>,
#[serde(rename = "scaleid")]
pub r#scaleid: Option<i64>,
#[serde(rename = "locked")]
pub r#locked: Option<bool>,
#[serde(rename = "cmid")]
pub r#cmid: Option<i64>,
#[serde(rename = "weightraw")]
pub r#weightraw: Option<f64>,
#[serde(rename = "weightformatted")]
pub r#weightformatted: Option<String>,
#[serde(rename = "status")]
pub r#status: Option<String>,
#[serde(rename = "graderaw")]
pub r#graderaw: Option<f64>,
#[serde(rename = "gradedatesubmitted")]
pub r#gradedatesubmitted: Option<i64>,
#[serde(rename = "gradedategraded")]
pub r#gradedategraded: Option<i64>,
#[serde(rename = "gradehiddenbydate")]
pub r#gradehiddenbydate: Option<bool>,
#[serde(rename = "gradeneedsupdate")]
pub r#gradeneedsupdate: Option<bool>,
#[serde(rename = "gradeishidden")]
pub r#gradeishidden: Option<bool>,
#[serde(rename = "gradeislocked")]
pub r#gradeislocked: Option<bool>,
#[serde(rename = "gradeisoverridden")]
pub r#gradeisoverridden: Option<bool>,
#[serde(rename = "gradeformatted")]
pub r#gradeformatted: Option<String>,
#[serde(rename = "grademin")]
pub r#grademin: Option<f64>,
#[serde(rename = "grademax")]
pub r#grademax: Option<f64>,
#[serde(rename = "rangeformatted")]
pub r#rangeformatted: Option<String>,
#[serde(rename = "percentageformatted")]
pub r#percentageformatted: Option<String>,
#[serde(rename = "lettergradeformatted")]
pub r#lettergradeformatted: Option<String>,
#[serde(rename = "rank")]
pub r#rank: Option<i64>,
#[serde(rename = "numusers")]
pub r#numusers: Option<i64>,
#[serde(rename = "averageformatted")]
pub r#averageformatted: Option<String>,
#[serde(rename = "feedback")]
pub r#feedback: Option<String>,
#[serde(rename = "feedbackformat")]
pub r#feedbackformat: Option<i64>,
}
pub type r#ReturnsUsergradesItemGradeitems = Vec<ReturnsUsergradesItemGradeitemsItem>;
#[derive(Serialize, Deserialize, Debug)]
pub struct ReturnsUsergradesItem {
#[serde(rename = "courseid")]
pub r#courseid: Option<i64>,
#[serde(rename = "courseidnumber")]
pub r#courseidnumber: Option<String>,
#[serde(rename = "userid")]
pub r#userid: Option<i64>,
#[serde(rename = "userfullname")]
pub r#userfullname: Option<String>,
#[serde(rename = "useridnumber")]
pub r#useridnumber: Option<String>,
#[serde(rename = "maxdepth")]
pub r#maxdepth: Option<i64>,
#[serde(rename = "gradeitems")]
pub r#gradeitems: Option<r#ReturnsUsergradesItemGradeitems>,
}
pub type r#ReturnsUsergrades = Vec<ReturnsUsergradesItem>;
#[derive(Serialize, Deserialize, Debug)]
pub struct ReturnsWarningsItem {
#[serde(rename = "item")]
pub r#item: Option<String>,
#[serde(rename = "itemid")]
pub r#itemid: Option<i64>,
#[serde(rename = "warningcode")]
pub r#warningcode: Option<String>,
#[serde(rename = "message")]
pub r#message: Option<String>,
}
pub type r#ReturnsWarnings = Vec<ReturnsWarningsItem>;
#[derive(Serialize, Deserialize, Debug)]
pub struct Returns {
#[serde(rename = "usergrades")]
pub r#usergrades: Option<r#ReturnsUsergrades>,
#[serde(rename = "warnings")]
pub r#warnings: Option<r#ReturnsWarnings>,
}
pub async fn call<'a>(
client: &'a mut moodle_client::MoodleClient,
params: &'a mut Params,
) -> anyhow::Result<Returns> {
let json = client
.post("gradereport_user_get_grade_items", params)
.await?;
serde_json::from_value(json).map_err(|e| e.into())
}
pub async fn call_raw<'a>(
client: &'a mut moodle_client::MoodleClient,
params: &'a mut Params,
) -> anyhow::Result<serde_json::Value> {
client
.post("gradereport_user_get_grade_items", params)
.await
}