From b831d47d91e18367bac0d6982371020088ac09f8 Mon Sep 17 00:00:00 2001 From: Alex Mickelson Date: Tue, 24 Oct 2023 16:32:12 -0600 Subject: [PATCH] adding buttons to manage assignments from canvas --- Management.Web/Pages/QuizFormPage.razor | 16 +- .../AssignmentForm/AssignmentForm.razor | 158 ++++++++++++------ .../AssignmentForm/RubricEditor.razor | 5 - .../Shared/Components/ConfirmationModal.razor | 2 +- .../Shared/Module/NewAssignment.razor | 1 - .../Configuration/AssignmentEditorContext.cs | 82 ++++++++- .../Configuration/QuizEditorContext.cs | 19 ++- .../AssignmentSyncronizationExtensions.cs | 3 + Management/Models/Local/LocalAssignment.cs | 8 +- .../Canvas/CanvasAssignmentService.cs | 6 +- .../Services/Canvas/CanvasQuizService.cs | 3 +- README.md | 19 --- 12 files changed, 215 insertions(+), 107 deletions(-) diff --git a/Management.Web/Pages/QuizFormPage.razor b/Management.Web/Pages/QuizFormPage.razor index c5a5113..01d5136 100644 --- a/Management.Web/Pages/QuizFormPage.razor +++ b/Management.Web/Pages/QuizFormPage.razor @@ -57,10 +57,10 @@ if (quizContext.Quiz == null) { var quiz = planner - .LocalCourse? - .Modules - .SelectMany(m => m.Quizzes) - .FirstOrDefault(q => q.Name == QuizName); + .LocalCourse? + .Modules + .SelectMany(m => m.Quizzes) + .FirstOrDefault(q => q.Name == QuizName); quizContext.Quiz = quiz; logger.LogInformation($"set quiz to '{quizContext.Quiz?.Name}'"); @@ -165,8 +165,12 @@ {
- + diff --git a/Management.Web/Shared/Components/AssignmentForm/AssignmentForm.razor b/Management.Web/Shared/Components/AssignmentForm/AssignmentForm.razor index 82ceed0..eab83d7 100644 --- a/Management.Web/Shared/Components/AssignmentForm/AssignmentForm.razor +++ b/Management.Web/Shared/Components/AssignmentForm/AssignmentForm.razor @@ -1,6 +1,7 @@ @using Management.Web.Shared.Components @using Management.Web.Shared.Components.AssignmentForm @using Management.Web.Shared.Components.Forms +@using CanvasModel.Assignments @inject CoursePlanner planner @inject CanvasService canvas @@ -27,7 +28,7 @@ assignmentContext.StateHasChanged -= reload; } - private void OnHide() + private void OnHide() { assignmentContext.Assignment = null; name = ""; @@ -36,6 +37,9 @@ private string name { get; set; } = String.Empty; private bool lockAtDueDate { get; set; } + private bool addingAssignmentToCanvas = false; + private bool deletingAssignmentFromCanvas = false; + private void submitHandler() { if (assignmentContext.Assignment != null) @@ -65,22 +69,24 @@ ) ?? throw new Exception("handling assignment delete, could not find module"); var newModules = planner.LocalCourse.Modules.Select(m => - m.Name == currentModule.Name - ? m with - { - Assignments = m.Assignments.Where(a => a != assignment).ToArray() - } - : m - ).ToArray(); + m.Name == currentModule.Name + ? m with + { + Assignments = m.Assignments.Where(a => a != assignment).ToArray() + } + : m + ) + .ToArray(); planner.LocalCourse = planner.LocalCourse with { Modules = newModules }; - if (assignment.CanvasId != null && planner.LocalCourse.Settings.CanvasId != null) + + if (assignmentInCanvas != null && planner.LocalCourse.Settings.CanvasId != null) { ulong courseId = planner.LocalCourse.Settings.CanvasId ?? throw new Exception("cannot delete if no course id"); - await canvas.Assignments.Delete(courseId, assignment); + await canvas.Assignments.Delete(courseId, assignmentInCanvas.Id, assignment.Name); } } } @@ -100,35 +106,64 @@ { var lockAtDueDate = (bool)(e.Value ?? false); var lockAtDate = lockAtDueDate - ? assignmentContext.Assignment.DueAt - : assignmentContext.Assignment.LockAt; - var newAssignment = assignmentContext.Assignment with { - LockAtDueDate = lockAtDueDate, - LockAt = lockAtDate, - }; + ? assignmentContext.Assignment.DueAt + : assignmentContext.Assignment.LockAt; + var newAssignment = assignmentContext.Assignment with + { + LockAtDueDate = lockAtDueDate, + LockAt = lockAtDate, + }; assignmentContext.SaveAssignment(newAssignment); } } private void setAssignmentGroup(LocalAssignmentGroup? group) { - if(assignmentContext.Assignment == null) + if (assignmentContext.Assignment == null) return; - - var newAssignment = assignmentContext.Assignment with - { - LocalAssignmentGroupId = group?.Id - }; + + var newAssignment = assignmentContext.Assignment with + { + LocalAssignmentGroupId = group?.Id + }; assignmentContext.SaveAssignment(newAssignment); } private LocalAssignmentGroup? selectedAssignmentGroup => planner - .LocalCourse? - .Settings - .AssignmentGroups - .FirstOrDefault(g => g.Id == assignmentContext.Assignment?.LocalAssignmentGroupId); + .LocalCourse? + .Settings + .AssignmentGroups + .FirstOrDefault(g => g.Id == assignmentContext.Assignment?.LocalAssignmentGroupId); + + private async Task addToCanvas() + { + addingAssignmentToCanvas = true; + await assignmentContext.AddAssignmentToCanvas(); + await planner.LoadCanvasData(); + addingAssignmentToCanvas = false; + } + + private CanvasAssignment? assignmentInCanvas => + planner.CanvasAssignments?.FirstOrDefault(a => a.Name == assignmentContext.Assignment?.Name); + + private string canvasAssignmentUrl => + $"https://snow.instructure.com/courses/{planner.LocalCourse?.Settings.CanvasId}/assignments/{assignmentInCanvas?.Id}"; + + private async Task deleteFromCanvas() + { + if (assignmentInCanvas == null || planner.LocalCourse.Settings.CanvasId == null || assignmentContext.Assignment == null) + return; + deletingAssignmentFromCanvas = true; + await canvas.Assignments.Delete( + (ulong)planner.LocalCourse.Settings.CanvasId, + assignmentInCanvas.Id, + assignmentContext.Assignment.Name); + await planner.LoadCanvasData(); + StateHasChanged(); + deletingAssignmentFromCanvas = false; + } } @assignmentContext.Assignment?.Name @@ -136,38 +171,26 @@ @if (assignmentContext.Assignment != null) {
- - -
- + Name + + +
+
- -
@@ -185,16 +208,41 @@ + @if (assignmentInCanvas != null) + { + + View in Canvas + + + } +
+@if (addingAssignmentToCanvas || deletingAssignmentFromCanvas) +{ + +}


diff --git a/Management.Web/Shared/Components/AssignmentForm/RubricEditor.razor b/Management.Web/Shared/Components/AssignmentForm/RubricEditor.razor index b129f64..3da6cc1 100644 --- a/Management.Web/Shared/Components/AssignmentForm/RubricEditor.razor +++ b/Management.Web/Shared/Components/AssignmentForm/RubricEditor.razor @@ -29,14 +29,9 @@ { if (assignmentContext.Assignment != null) { - var totalRubricPoints = rubric - .Where(r => !r.Label.Contains(RubricItem.extraCredit)) - .Select(s => s.Points) - .Sum(); var newAssignment = assignmentContext.Assignment with { Rubric = rubric, - PointsPossible = totalRubricPoints, }; assignmentContext.SaveAssignment(newAssignment); StateHasChanged(); diff --git a/Management.Web/Shared/Components/ConfirmationModal.razor b/Management.Web/Shared/Components/ConfirmationModal.razor index 4528bb3..87fce84 100644 --- a/Management.Web/Shared/Components/ConfirmationModal.razor +++ b/Management.Web/Shared/Components/ConfirmationModal.razor @@ -49,7 +49,7 @@ }