working on canvas sync

This commit is contained in:
2023-07-29 20:33:00 -06:00
parent 7c857a3887
commit 2cca727b4d
26 changed files with 362 additions and 83 deletions

View File

@@ -3,7 +3,7 @@ using CanvasModel.Submissions;
namespace CanvasModel.Assignments;
public record AssignmentModel
public record CanvasAssignment
(
[property: JsonPropertyName("id")]
@@ -88,7 +88,7 @@ public record AssignmentModel
DateTime? UnlockAt = null,
[property: JsonPropertyName("all_dates")]
IEnumerable<AssignmentDateModel>? AllDates = null,
IEnumerable<CanvasAssignmentDate>? AllDates = null,
[property: JsonPropertyName("allowed_extensions")]
IEnumerable<string>? AllowedExtensions = null,
@@ -100,13 +100,13 @@ public record AssignmentModel
bool? VeriCiteEnabled = null,
[property: JsonPropertyName("turnitin_settings")]
TurnitinSettingsModel? TurnitinSettings = null,
CanvasTurnitinSettings? TurnitinSettings = null,
[property: JsonPropertyName("grade_group_students_individually")]
bool? GradeGroupStudentsIndividually = null,
[property: JsonPropertyName("external_tool_tag_attributes")]
ExternalToolTagAttributesModel? ExternalToolTagAttributes = null,
CanvasExternalToolTagAttributes? ExternalToolTagAttributes = null,
[property: JsonPropertyName("peer_review_count")]
uint? PeerReviewCount = null,
@@ -124,7 +124,7 @@ public record AssignmentModel
uint? NeedsGradingCount = null,
[property: JsonPropertyName("needs_grading_count_be_section")]
IEnumerable<NeedsGradingCountModel>? NeedsGradingCountBySection = null,
IEnumerable<CanvasNeedsGradingCount>? NeedsGradingCountBySection = null,
[property: JsonPropertyName("post_to_sis")]
bool? PostToSis = null,
@@ -148,7 +148,7 @@ public record AssignmentModel
ulong? GradingStandardId = null,
[property: JsonPropertyName("lock_info")]
LockInfoModel? LockInfo = null,
CanvasLockInfo? LockInfo = null,
[property: JsonPropertyName("lock_explanation")]
string? LockExplanation = null,
@@ -181,13 +181,13 @@ public record AssignmentModel
object? RubricSettings = null,
[property: JsonPropertyName("rubric")]
IEnumerable<RubricCriteriaModel>? Rubric = null,
IEnumerable<CanvasRubricCriteria>? Rubric = null,
[property: JsonPropertyName("assignment_visibility")]
IEnumerable<ulong>? AssignmentVisibility = null,
[property: JsonPropertyName("overrides")]
IEnumerable<AssignmentOverrideModel>? Overrides = null,
IEnumerable<CanvasAssignmentOverride>? Overrides = null,
[property: JsonPropertyName("omit_from_final_grade")]
bool? OmitFromFinalGrade = null,

View File

@@ -1,6 +1,6 @@
namespace CanvasModel.Assignments;
public record AssignmentDateModel
public record CanvasAssignmentDate
(
[property: JsonPropertyName("title")]
string Title,

View File

@@ -1,6 +1,6 @@
namespace CanvasModel.Assignments;
public record AssignmentOverrideModel
public record CanvasAssignmentOverride
(
[property: JsonPropertyName("id")]

View File

@@ -1,6 +1,6 @@
namespace CanvasModel.Assignments;
public record ExternalToolTagAttributesModel
public record CanvasExternalToolTagAttributes
(
[property: JsonPropertyName("url")]
string Url,

View File

@@ -1,6 +1,6 @@
namespace CanvasModel.Assignments;
public record LockInfoModel
public record CanvasLockInfo
(
[property: JsonPropertyName("asset_string")]
string AssetString,

View File

@@ -1,6 +1,6 @@
namespace CanvasModel.Assignments;
public record NeedsGradingCountModel
public record CanvasNeedsGradingCount
(
[property: JsonPropertyName("section_id")]
string SectionId,

View File

@@ -1,6 +1,6 @@
namespace CanvasModel.Assignments;
public record RubricCriteriaModel
public record CanvasRubricCriteria
(
[property: JsonPropertyName("id")]
string Id,
@@ -23,7 +23,7 @@ public record RubricCriteriaModel
bool? CriterionUseRange = null,
[property: JsonPropertyName("ratings")]
IEnumerable<RubricRatingModel>? Ratings = null,
IEnumerable<CanvasRubricRating>? Ratings = null,
[property: JsonPropertyName("ignore_for_scoring")]
bool? IgnoreForScoring = null

View File

@@ -1,6 +1,6 @@
namespace CanvasModel.Assignments;
public record RubricRatingModel
public record CanvasRubricRating
(
[property: JsonPropertyName("points")]
double Points,

View File

@@ -1,6 +1,6 @@
namespace CanvasModel.Assignments;
public record TurnitinSettingsModel
public record CanvasTurnitinSettings
(
[property: JsonPropertyName("originality_report_visibility")]
string OriginalityReportVisibility,

View File

@@ -1,11 +0,0 @@
using System.ComponentModel.DataAnnotations;
namespace CanvasModel;
public record CourseModule(
[property: JsonPropertyName("id")] ulong Id,
[property: JsonPropertyName("name")] string Name
// [property: JsonPropertyName("start_at")] DateTime StartAt,
// [property: JsonPropertyName("end_at")] DateTime EndAt,
// [property: JsonPropertyName("description")] string Description
);

View File

@@ -0,0 +1,23 @@
namespace CanvasModel.Modules;
public record CanvasModule(
[property: JsonPropertyName("id")] ulong Id,
[property: JsonPropertyName("workflow_state")] string WorkflowState,
[property: JsonPropertyName("position")] uint Position,
[property: JsonPropertyName("name")] string Name,
[property: JsonPropertyName("unlock_at")] DateTime? UnlockAt,
[property: JsonPropertyName("require_sequential_progress")] bool? RequireSequentialProgress,
[property: JsonPropertyName("prerequisite_module_ids")] IEnumerable<ulong>? PrerequisiteModuleIds,
[property: JsonPropertyName("items_count")] uint ItemsCount,
[property: JsonPropertyName("items_url")] string ItemsUrl,
// [OptIn]
// [Enigmatic] // can be null if "the module is deemed too large", even if opted-in
[property: JsonPropertyName("items")]
IEnumerable<CanvasModuleItem>? Items,
[property: JsonPropertyName("state")] string? State, // todo make sure this,
// [OptIn]
[property: JsonPropertyName("completed_at")]
DateTime? CompletedAt,
[property: JsonPropertyName("publish_final_grade")] bool? PublishFinalGrade,
[property: JsonPropertyName("published")] bool? Published
);

View File

@@ -0,0 +1,7 @@
namespace CanvasModel.Modules;
public record CanvasCompletionRequirement(
[property: JsonPropertyName("type")] string Type,
[property: JsonPropertyName("min_score")] double? MinScore,
[property: JsonPropertyName("completed")] bool? Completed
);

View File

@@ -0,0 +1,20 @@
namespace CanvasModel.Modules;
public record CanvasModuleItem(
[property: JsonPropertyName("id")] ulong Id,
[property: JsonPropertyName("module_id")] ulong ModuleId,
[property: JsonPropertyName("position")] uint Position,
[property: JsonPropertyName("title")] string Title,
[property: JsonPropertyName("indent")] uint? Indent,
[property: JsonPropertyName("type")] string Type,
[property: JsonPropertyName("content_id")] ulong? ContentId,
[property: JsonPropertyName("html_url")] string HtmlUrl,
[property: JsonPropertyName("url")] string? Url,
[property: JsonPropertyName("page_url")] string? PageUrl,
[property: JsonPropertyName("external_url")] string? ExternalUrl,
[property: JsonPropertyName("new_tab")] bool NewTab,
// [OptIn]
[property: JsonPropertyName("completion_requirement")]
CanvasCompletionRequirement? CompletionRequirement,
[property: JsonPropertyName("published")] bool? Published
);

View File

@@ -33,7 +33,7 @@ public record SubmissionModel
string LatePolicyStatus,
[property: JsonPropertyName("assignment")]
AssignmentModel? Assignment = null,
CanvasAssignment? Assignment = null,
[property: JsonPropertyName("course")]
CourseModel? Course = null,

View File

@@ -90,7 +90,7 @@ public record ActivityStreamObjectModel
ulong? AssignmentId = null,
[property: JsonPropertyName("assignment")]
AssignmentModel? Assignment = null,
CanvasAssignment? Assignment = null,
[property: JsonPropertyName("course")]
CourseModel? Course = null,

View File

@@ -5,4 +5,6 @@ public record LocalModule
public string Name { get; init; } = string.Empty;
public IEnumerable<LocalAssignment> Assignments { get; init; } =
Enumerable.Empty<LocalAssignment>();
public ulong? CanvasId { get; set; } = null;
}