use serde::{Deserialize, Serialize};
use crate::canvas::CanvasInformation;
use crate::models::prelude::*;
use crate::parameters::*;
use crate::requests::*;
#[derive(Debug, Deserialize, Serialize)]
pub struct Course {
pub id: usize,
pub sis_course_id: Option<String>,
pub uuid: Option<String>,
pub integration_id: Option<usize>,
pub sis_import_id: Option<usize>,
pub name: Option<String>,
pub course_code: Option<String>,
pub workflow_state: Option<String>,
pub account_id: Option<usize>,
pub root_account_id: Option<usize>,
pub enrollment_term_id: Option<usize>,
pub grading_standard_id: Option<usize>,
pub grade_passback_setting: Option<String>,
pub created_at: Option<String>,
pub start_at: Option<String>,
pub end_at: Option<String>,
pub locale: Option<String>,
pub total_students: Option<usize>,
pub default_view: Option<String>,
pub syllabus_body: Option<String>,
pub needs_grading_count: Option<usize>,
pub apply_assignment_group_weights: Option<bool>,
pub permissions: Option<Vec<String>>,
pub is_public: Option<bool>,
pub is_public_to_auth_users: Option<bool>,
pub public_syllabus: Option<bool>,
pub public_syllabus_to_auth: Option<bool>,
pub public_description: Option<String>,
pub storage_quota_mb: Option<usize>,
pub storage_quota_used_mb: Option<usize>,
pub hide_final_grades: Option<bool>,
pub license: Option<String>,
pub allow_student_assignment_edits: Option<bool>,
pub allow_wiki_comments: Option<bool>,
pub allow_student_forum_attachments: Option<bool>,
pub open_enrollment: Option<bool>,
pub self_enrollment: Option<bool>,
pub restrict_enrollments_to_course_dates: Option<bool>,
pub course_format: Option<String>,
pub access_restricted_by_date: Option<bool>,
pub time_zone: Option<String>,
pub blueprint: Option<bool>,
}
impl Course {
api_todo! {
add_grading_standards(self)
}
api_todo! {
conclude(self)
}
api_todo! {
create_assignment(self)
}
api_todo! {
create_assignment_group(self)
}
api_todo! {
create_assignment_overrides(self)
}
api_get! {
courses():
"courses" =>
() -> () -> [Course]
}
api_get! {
get_all_outcome_links_in_context(self):
"courses/{id}/outcome_group_links" =>
(id: self.id) -> () -> [String]
}
api_get! {
get_assignment(self):
"courses/{id}/assignments/{assignment_id}" =>
(id: self.id) -> (assignment_id: usize) -> Assignment
}
api_get! {
get_assignment_group(self):
"courses/{id}/assignment_groups/{assignment_group_id}" =>
(id: self.id) -> (assignment_group_id: usize) -> AssignmentGroup
}
api_get! {
get_assignment_groups(self):
"course/{id}/assignment_groups" =>
(id: self.id) -> () -> [AssignmentGroup]
}
api_todo! {
get_assignment_overrides(self)
}
api_get! {
get_assignments(self):
"courses/{id}/assignments" =>
(id: self.id) -> () -> [Assignment]
}
api_get! {
get_assignments_for_group(self):
"courses/{id}/assignment_groups/{assignment_group_id}/assignments" =>
(id: self.id) -> (assignment_group_id: usize) -> [Assignment]
}
api_get! {
get_users(self):
"courses/{id}/search_users" =>
(id: self.id) -> () -> [User]
}
api_get! {
get_students(self):
"courses/{id}/search_users" =>
(id: self.id) -> () -> [User]
[EnrollmentType::Student]
}
api_get! {
get_files(self):
"courses/{id}/files" =>
(id: self.id) -> () -> [File]
}
}