model refactorings

This commit is contained in:
2023-01-04 21:03:36 -07:00
parent b9824a7327
commit dcc8fef898
119 changed files with 989 additions and 3773 deletions

View File

@@ -1,26 +1,22 @@
using System;
namespace CanvasModel.Assignments;
public class AssignmentDateModel
{
public record AssignmentDateModel
(
[property: JsonPropertyName("title")]
string Title,
[JsonPropertyName("id")]
public ulong? Id { get; set; }
[property: JsonPropertyName("id")]
ulong? Id = null,
[JsonPropertyName("base")]
public bool? Base { get; set; }
[property: JsonPropertyName("base")]
bool? Base = null,
[JsonPropertyName("title")]
public string Title { get; set; }
[property: JsonPropertyName("due_at")]
DateTime? DueAt = null,
[JsonPropertyName("due_at")]
public DateTime? DueAt { get; set; }
[property: JsonPropertyName("unlock_at")]
DateTime? UnlockAt = null,
[JsonPropertyName("unlock_at")]
public DateTime? UnlockAt { get; set; }
[JsonPropertyName("lock_at")]
public DateTime? LockAt { get; set; }
}
[property: JsonPropertyName("lock_at")]
DateTime? LockAt = null
);

View File

@@ -1,212 +1,209 @@
using System;
using System.Collections.Generic;
using CanvasModel.Discussions;
using CanvasModel.Submissions;
namespace CanvasModel.Assignments;
public class AssignmentModel
{
[JsonPropertyName("id")]
public ulong Id { get; set; }
public record AssignmentModel
(
[JsonPropertyName("name")]
public string Name { get; set; }
[property: JsonPropertyName("id")]
ulong Id,
[JsonPropertyName("description")]
public string Description { get; set; }
[property: JsonPropertyName("name")]
string Name,
[JsonPropertyName("created_at")]
public DateTime CreatedAt { get; set; }
[property: JsonPropertyName("description")]
string Description,
[JsonPropertyName("updated_at")]
public DateTime? UpdatedAt { get; set; }
[property: JsonPropertyName("created_at")]
DateTime CreatedAt,
[JsonPropertyName("due_at")]
public DateTime? DueAt { get; set; }
[property: JsonPropertyName("has_overrides")]
bool HasOverrides,
[JsonPropertyName("lock_at")]
public DateTime? LockAt { get; set; }
[property: JsonPropertyName("course_id")]
ulong CourseId,
[JsonPropertyName("unlock_at")]
public DateTime? UnlockAt { get; set; }
[property: JsonPropertyName("html_url")]
string HtmlUrl,
[JsonPropertyName("has_overrides")]
public bool HasOverrides { get; set; }
[property: JsonPropertyName("submissions_download_url")]
string SubmissionsDownloadUrl,
[JsonPropertyName("all_dates")]
public IEnumerable<AssignmentDateModel>? AllDates { get; set; }
[property: JsonPropertyName("assignment_group_id")]
ulong AssignmentGroupId,
[JsonPropertyName("course_id")]
public ulong CourseId { get; set; }
[property: JsonPropertyName("due_date_required")]
bool DueDateRequired,
[JsonPropertyName("html_url")]
public string HtmlUrl { get; set; }
[property: JsonPropertyName("max_name_length")]
uint MaxNameLength,
[JsonPropertyName("submissions_download_url")]
public string SubmissionsDownloadUrl { get; set; }
[property: JsonPropertyName("peer_reviews")]
bool PeerReviews,
[JsonPropertyName("assignment_group_id")]
public ulong AssignmentGroupId { get; set; }
[property: JsonPropertyName("automatic_peer_reviews")]
bool AutomaticPeerReviews,
[JsonPropertyName("due_date_required")]
public bool DueDateRequired { get; set; }
[property: JsonPropertyName("position")]
ulong Position,
[JsonPropertyName("allowed_extensions")]
public IEnumerable<string>? AllowedExtensions { get; set; }
[property: JsonPropertyName("grading_type")]
string GradingType,
[JsonPropertyName("max_name_length")]
public uint MaxNameLength { get; set; }
[property: JsonPropertyName("published")]
bool Published,
[JsonPropertyName("turnitin_enabled")]
public bool? TurnitinEnabled { get; set; }
[property: JsonPropertyName("unpublishable")]
bool Unpublishable,
[JsonPropertyName("vericite_enabled")]
public bool? VeriCiteEnabled { get; set; }
[property: JsonPropertyName("only_visible_to_overrides")]
bool OnlyVisibleToOverrides,
[JsonPropertyName("turnitin_settings")]
public TurnitinSettingsModel? TurnitinSettings { get; set; }
[property: JsonPropertyName("locked_for_user")]
bool LockedForUser,
[JsonPropertyName("grade_group_students_individually")]
public bool? GradeGroupStudentsIndividually { get; set; }
[property: JsonPropertyName("moderated_grading")]
bool ModeratedGrading,
[JsonPropertyName("external_tool_tag_attributes")]
public ExternalToolTagAttributesModel? ExternalToolTagAttributes { get; set; }
[property: JsonPropertyName("grader_count")]
uint GraderCount,
[JsonPropertyName("peer_reviews")]
public bool PeerReviews { get; set; }
[property: JsonPropertyName("allowed_attempts")]
int AllowedAttempts,
[JsonPropertyName("automatic_peer_reviews")]
public bool AutomaticPeerReviews { get; set; }
[property: JsonPropertyName("submission_types")]
IEnumerable<string> SubmissionTypes,
[JsonPropertyName("peer_review_count")]
public uint? PeerReviewCount { get; set; }
[property: JsonPropertyName("updated_at")]
DateTime? UpdatedAt = null,
[JsonPropertyName("peer_reviews_assign_at")]
public DateTime? PeerReviewsAssignAt { get; set; }
[property: JsonPropertyName("due_at")]
DateTime? DueAt = null,
[JsonPropertyName("intra_group_peer_reviews")]
public bool? IntraGroupPeerReviews { get; set; }
[property: JsonPropertyName("lock_at")]
DateTime? LockAt = null,
[JsonPropertyName("group_category_id")]
public ulong? GroupCategoryId { get; set; }
[property: JsonPropertyName("unlock_at")]
DateTime? UnlockAt = null,
[JsonPropertyName("needs_grading_count")]
public uint? NeedsGradingCount { get; set; }
[property: JsonPropertyName("all_dates")]
IEnumerable<AssignmentDateModel>? AllDates = null,
[JsonPropertyName("needs_grading_count_be_section")]
public IEnumerable<NeedsGradingCountModel>? NeedsGradingCountBySection { get; set; }
[property: JsonPropertyName("allowed_extensions")]
IEnumerable<string>? AllowedExtensions = null,
[JsonPropertyName("position")]
public ulong Position { get; set; }
[property: JsonPropertyName("turnitin_enabled")]
bool? TurnitinEnabled = null,
[JsonPropertyName("post_to_sis")]
public bool? PostToSis { get; set; }
[property: JsonPropertyName("vericite_enabled")]
bool? VeriCiteEnabled = null,
[JsonPropertyName("integration_id")]
public string? IntegrationId { get; set; }
[property: JsonPropertyName("turnitin_settings")]
TurnitinSettingsModel? TurnitinSettings = null,
[JsonPropertyName("integration_data")]
public object? IntegrationData { get; set; }
[property: JsonPropertyName("grade_group_students_individually")]
bool? GradeGroupStudentsIndividually = null,
[JsonPropertyName("muted")]
public bool? Muted { get; set; }
[property: JsonPropertyName("external_tool_tag_attributes")]
ExternalToolTagAttributesModel? ExternalToolTagAttributes = null,
[JsonPropertyName("points_possible")]
public double? PointsPossible { get; set; }
[property: JsonPropertyName("peer_review_count")]
uint? PeerReviewCount = null,
[JsonPropertyName("submission_types")]
public IEnumerable<string> SubmissionTypes { get; set; }
[property: JsonPropertyName("peer_reviews_assign_at")]
DateTime? PeerReviewsAssignAt = null,
[JsonPropertyName("has_submitted_submissions")]
public bool? HasSubmittedSubmissions { get; set; }
[property: JsonPropertyName("intra_group_peer_reviews")]
bool? IntraGroupPeerReviews = null,
[JsonPropertyName("grading_type")]
public string GradingType { get; set; }
[property: JsonPropertyName("group_category_id")]
ulong? GroupCategoryId = null,
[JsonPropertyName("grading_standard_id")]
public ulong? GradingStandardId { get; set; }
[property: JsonPropertyName("needs_grading_count")]
uint? NeedsGradingCount = null,
[JsonPropertyName("published")]
public bool Published { get; set; }
[property: JsonPropertyName("needs_grading_count_be_section")]
IEnumerable<NeedsGradingCountModel>? NeedsGradingCountBySection = null,
[JsonPropertyName("unpublishable")]
public bool Unpublishable { get; set; }
[property: JsonPropertyName("post_to_sis")]
bool? PostToSis = null,
[JsonPropertyName("only_visible_to_overrides")]
public bool OnlyVisibleToOverrides { get; set; }
[property: JsonPropertyName("integration_id")]
string? IntegrationId = null,
[JsonPropertyName("locked_for_user")]
public bool LockedForUser { get; set; }
[property: JsonPropertyName("integration_data")]
object? IntegrationData = null,
[JsonPropertyName("lock_info")]
public LockInfoModel? LockInfo { get; set; }
[property: JsonPropertyName("muted")]
bool? Muted = null,
[JsonPropertyName("lock_explanation")]
public string? LockExplanation { get; set; }
[property: JsonPropertyName("points_possible")]
double? PointsPossible = null,
[JsonPropertyName("quiz_id")]
public ulong? QuizId { get; set; }
[property: JsonPropertyName("has_submitted_submissions")]
bool? HasSubmittedSubmissions = null,
[JsonPropertyName("anonymous_submissions")]
public bool? AnonymousSubmissions { get; set; }
[property: JsonPropertyName("grading_standard_id")]
ulong? GradingStandardId = null,
[JsonPropertyName("discussion_topic")]
public DiscussionTopicModel? DiscussionTopic { get; set; }
[property: JsonPropertyName("lock_info")]
LockInfoModel? LockInfo = null,
[JsonPropertyName("freeze_on_copy")]
public bool? FreezeOnCopy { get; set; }
[property: JsonPropertyName("lock_explanation")]
string? LockExplanation = null,
[JsonPropertyName("frozen")]
public bool? Frozen { get; set; }
[property: JsonPropertyName("quiz_id")]
ulong? QuizId = null,
[JsonPropertyName("frozen_attributes")]
public IEnumerable<string>? FrozenAttributes { get; set; }
[property: JsonPropertyName("anonymous_submissions")]
bool? AnonymousSubmissions = null,
[JsonPropertyName("submission")]
public SubmissionModel? Submission { get; set; }
[property: JsonPropertyName("discussion_topic")]
DiscussionTopicModel? DiscussionTopic = null,
[JsonPropertyName("use_rubric_for_grading")]
public bool? UseRubricForGrading { get; set; }
[property: JsonPropertyName("freeze_on_copy")]
bool? FreezeOnCopy = null,
[JsonPropertyName("rubric_settings")]
public object? RubricSettings { get; set; } // again, docs give no concrete type.
[property: JsonPropertyName("frozen")]
bool? Frozen = null,
[JsonPropertyName("rubric")]
public IEnumerable<RubricCriteriaModel>? Rubric { get; set; }
[property: JsonPropertyName("frozen_attributes")]
IEnumerable<string>? FrozenAttributes = null,
[JsonPropertyName("assignment_visibility")]
public IEnumerable<ulong>? AssignmentVisibility { get; set; }
[property: JsonPropertyName("submission")]
SubmissionModel? Submission = null,
[JsonPropertyName("overrides")]
public IEnumerable<AssignmentOverrideModel>? Overrides { get; set; }
[property: JsonPropertyName("use_rubric_for_grading")]
bool? UseRubricForGrading = null,
[JsonPropertyName("omit_from_final_grade")]
public bool? OmitFromFinalGrade { get; set; }
[property: JsonPropertyName("rubric_settings")]
object? RubricSettings = null,
[JsonPropertyName("moderated_grading")]
public bool ModeratedGrading { get; set; }
[property: JsonPropertyName("rubric")]
IEnumerable<RubricCriteriaModel>? Rubric = null,
[JsonPropertyName("grader_count")]
public uint GraderCount { get; set; }
[property: JsonPropertyName("assignment_visibility")]
IEnumerable<ulong>? AssignmentVisibility = null,
[JsonPropertyName("final_grader_id")]
public ulong? FinalGraderId { get; set; }
[property: JsonPropertyName("overrides")]
IEnumerable<AssignmentOverrideModel>? Overrides = null,
[JsonPropertyName("grader_comments_visible_to_graders")]
public bool? GraderCommentsVisibleToGraders { get; set; }
[property: JsonPropertyName("omit_from_final_grade")]
bool? OmitFromFinalGrade = null,
[JsonPropertyName("graders_anonymous_to_graders")]
public bool? GradersAnonymousToGraders { get; set; }
[property: JsonPropertyName("final_grader_id")]
ulong? FinalGraderId = null,
[JsonPropertyName("grader_names_anonymous_to_final_grader")]
public bool? GraderNamesVisibleToFinalGrader { get; set; }
[property: JsonPropertyName("grader_comments_visible_to_graders")]
bool? GraderCommentsVisibleToGraders = null,
[JsonPropertyName("anonymous_grading")]
public bool? AnonymousGrading { get; set; }
[property: JsonPropertyName("graders_anonymous_to_graders")]
bool? GradersAnonymousToGraders = null,
[JsonPropertyName("allowed_attempts")]
public int AllowedAttempts { get; set; }
}
[property: JsonPropertyName("grader_names_anonymous_to_final_grader")]
bool? GraderNamesVisibleToFinalGrader = null,
[property: JsonPropertyName("anonymous_grading")]
bool? AnonymousGrading = null
);

View File

@@ -1,42 +1,38 @@
using System;
using System.Collections.Generic;
namespace CanvasModel.Assignments;
public class AssignmentOverrideModel
{
[JsonPropertyName("id")]
public ulong Id { get; set; }
public record AssignmentOverrideModel
(
[JsonPropertyName("assignment_id")]
public ulong AssignmentId { get; set; }
[property: JsonPropertyName("id")]
ulong Id,
[JsonPropertyName("student_ids")]
public IEnumerable<ulong>? StudentIds { get; set; }
[property: JsonPropertyName("assignment_id")]
ulong AssignmentId,
[JsonPropertyName("group_id")]
public ulong? GroupId { get; set; }
[property: JsonPropertyName("course_section_ids")]
ulong CourseSectionId,
[JsonPropertyName("course_section_ids")]
public ulong CourseSectionId { get; set; }
[property: JsonPropertyName("title")]
string Title,
[JsonPropertyName("title")]
public string Title { get; set; }
[property: JsonPropertyName("student_ids")]
IEnumerable<ulong>? StudentIds = null,
[JsonPropertyName("due_at")]
public DateTime? DueAt { get; set; }
[property: JsonPropertyName("group_id")]
ulong? GroupId = null,
[JsonPropertyName("all_day")]
public bool? AllDay { get; set; }
[property: JsonPropertyName("due_at")]
DateTime? DueAt = null,
[JsonPropertyName("all_day_date")]
public DateTime? AllDayDate { get; set; }
[property: JsonPropertyName("all_day")]
bool? AllDay = null,
[JsonPropertyName("unlock_at")]
public DateTime? UnlockAt { get; set; }
[property: JsonPropertyName("all_day_date")]
DateTime? AllDayDate = null,
[JsonPropertyName("lock_at")]
public DateTime? LockAt { get; set; }
}
[property: JsonPropertyName("unlock_at")]
DateTime? UnlockAt = null,
[property: JsonPropertyName("lock_at")]
DateTime? LockAt = null
);

View File

@@ -1,15 +1,13 @@
namespace CanvasModel.Assignments;
public class ExternalToolTagAttributesModel
{
[JsonPropertyName("url")]
public string Url { get; set; }
public record ExternalToolTagAttributesModel
(
[property: JsonPropertyName("url")]
string Url,
[JsonPropertyName("new_tab")]
public bool? NewTab { get; set; }
[property: JsonPropertyName("resource_link_id")]
string ResourceLinkId,
[JsonPropertyName("resource_link_id")]
public string ResourceLinkId { get; set; }
}
[property: JsonPropertyName("new_tab")]
bool? NewTab = null
);

View File

@@ -1,23 +1,19 @@
using System;
namespace CanvasModel.Assignments;
public class LockInfoModel
{
[JsonPropertyName("asset_string")]
public string AssetString { get; set; }
public record LockInfoModel
(
[property: JsonPropertyName("asset_string")]
string AssetString,
[JsonPropertyName("unlock_at")]
public DateTime? UnlockAt { get; set; }
[property: JsonPropertyName("unlock_at")]
DateTime? UnlockAt = null,
[JsonPropertyName("lock_at")]
public DateTime? LockAt { get; set; }
[property: JsonPropertyName("lock_at")]
DateTime? LockAt = null,
[JsonPropertyName("context_module")]
public object? ContextModule { get; set; }
[property: JsonPropertyName("context_module")]
object? ContextModule = null,
[JsonPropertyName("manually_locked")]
public bool? ManuallyLocked { get; set; }
}
[property: JsonPropertyName("manually_locked")]
bool? ManuallyLocked = null
);

View File

@@ -1,12 +1,10 @@
namespace CanvasModel.Assignments;
public class NeedsGradingCountModel
{
[JsonPropertyName("section_id")]
public string SectionId { get; set; }
public record NeedsGradingCountModel
(
[property: JsonPropertyName("section_id")]
string SectionId,
[JsonPropertyName("needs_grading_count")]
public uint NeedsGradingCount { get; set; }
}
[property: JsonPropertyName("needs_grading_count")]
uint NeedsGradingCount
);

View File

@@ -1,36 +1,30 @@
using System.Collections.Generic;
namespace CanvasModel.Assignments;
public class RubricCriteriaModel
{
public record RubricCriteriaModel
(
[property: JsonPropertyName("id")]
string Id,
[JsonPropertyName("points")]
public double? Points { get; set; }
[property: JsonPropertyName("description")]
string Description,
[JsonPropertyName("id")]
public string Id { get; set; }
[property: JsonPropertyName("long_description")]
string LongDescription,
[JsonPropertyName("learning_outcome_id")]
public string? LearningOutcomeId { get; set; }
[property: JsonPropertyName("points")]
double? Points,
[property: JsonPropertyName("learning_outcome_id")]
string? LearningOutcomeId,
[JsonPropertyName("vendor_guid")]
public string? VendorGuid { get; set; }
[property: JsonPropertyName("vendor_guid")]
string? VendorGuid,
[JsonPropertyName("description")]
public string Description { get; set; }
[property: JsonPropertyName("criterion_use_range")]
bool? CriterionUseRange = null,
[JsonPropertyName("long_description")]
public string LongDescription { get; set; }
[property: JsonPropertyName("ratings")]
IEnumerable<RubricRatingModel>? Ratings = null,
[JsonPropertyName("criterion_use_range")]
public bool? CriterionUseRange { get; set; }
[JsonPropertyName("ratings")]
public IEnumerable<RubricRatingModel>? Ratings { get; set; }
[JsonPropertyName("ignore_for_scoring")]
public bool? IgnoreForScoring { get; set; }
}
[property: JsonPropertyName("ignore_for_scoring")]
bool? IgnoreForScoring = null
);

View File

@@ -1,18 +1,16 @@
namespace CanvasModel.Assignments;
public class RubricRatingModel
{
[JsonPropertyName("points")]
public double Points { get; set; }
public record RubricRatingModel
(
[property: JsonPropertyName("points")]
double Points,
[JsonPropertyName("id")]
public string Id { get; set; }
[property: JsonPropertyName("id")]
string Id,
[JsonPropertyName("description")]
public string Description { get; set; }
[property: JsonPropertyName("description")]
string Description,
[JsonPropertyName("long_description")]
public string LongDescription { get; set; }
}
[property: JsonPropertyName("long_description")]
string LongDescription
);

View File

@@ -1,30 +1,28 @@
namespace CanvasModel.Assignments;
public class TurnitinSettingsModel
{
[JsonPropertyName("originality_report_visibility")]
public string OriginalityReportVisibility { get; set; }
public record TurnitinSettingsModel
(
[property: JsonPropertyName("originality_report_visibility")]
string OriginalityReportVisibility,
[JsonPropertyName("s_paper_check")]
public bool SPaperCheck { get; set; }
[property: JsonPropertyName("s_paper_check")]
bool SPaperCheck,
[JsonPropertyName("internet_check")]
public bool InternetCheck { get; set; }
[property: JsonPropertyName("internet_check")]
bool InternetCheck,
[JsonPropertyName("journal_check")]
public bool JournalCheck { get; set; }
[property: JsonPropertyName("journal_check")]
bool JournalCheck,
[JsonPropertyName("exclude_biblio")]
public bool ExcludeBiblio { get; set; }
[property: JsonPropertyName("exclude_biblio")]
bool ExcludeBiblio,
[JsonPropertyName("exclude_quoted")]
public bool ExcludeQuoted { get; set; }
[property: JsonPropertyName("exclude_quoted")]
bool ExcludeQuoted,
[JsonPropertyName("exclude_small_matches_type")]
public bool? ExcludeSmallMatchesType { get; set; }
[property: JsonPropertyName("exclude_small_matches_type")]
bool? ExcludeSmallMatchesType = null,
[JsonPropertyName("exclude_small_matches_value")]
public uint? ExcludeSmallMatchesValue { get; set; }
}
[property: JsonPropertyName("exclude_small_matches_value")]
uint? ExcludeSmallMatchesValue = null
);