From 7a2ee58617cfa31a5fc3f12a7391b3b63382e1df Mon Sep 17 00:00:00 2001 From: Alex Mickelson Date: Mon, 7 Aug 2023 18:41:04 -0600 Subject: [PATCH] added delete support for assignments --- .editorconfig | 12 +++ .../AssignmentForm/AssignmentForm.razor | 40 +++++++++ .../SubmissionTypeSelector.razor | 18 +++-- .../Shared/Components/ConfirmationModal.razor | 81 +++++++++++++++++++ .../CoursePlannerSyncronizationExtensions.cs | 5 ++ .../CoursePlannerValidationExtensions.cs | 13 ++- .../Canvas/CanvasAssignmentService.cs | 31 ++++--- Management/Services/IWebRequestor.cs | 1 + Management/Services/WebRequestor.cs | 47 ++++++----- 9 files changed, 208 insertions(+), 40 deletions(-) create mode 100644 .editorconfig create mode 100644 Management.Web/Shared/Components/ConfirmationModal.razor diff --git a/.editorconfig b/.editorconfig new file mode 100644 index 0000000..f9a4117 --- /dev/null +++ b/.editorconfig @@ -0,0 +1,12 @@ +# Top-most EditorConfig file +root = true + +[*.cs] +dotnet_naming_rule.methods_must_be_camel_case.severity = warning +dotnet_naming_rule.methods_must_be_camel_case.symbols = private_methods +dotnet_naming_rule.methods_must_be_camel_case.style = camel_case_style + +dotnet_naming_symbols.private_methods.applicable_kinds = method +dotnet_naming_symbols.private_methods.applicable_accessibilities = private + +dotnet_naming_style.camel_case_style.capitalization = camel_case diff --git a/Management.Web/Shared/Components/AssignmentForm/AssignmentForm.razor b/Management.Web/Shared/Components/AssignmentForm/AssignmentForm.razor index 368ecb2..de5257b 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 @inject CoursePlanner planner +@inject CanvasService canvas @code { @@ -106,6 +107,40 @@ submissionTypes = newTypes; StateHasChanged(); } + + private async Task HandleDelete() + { + if(planner.LocalCourse != null) + { + var assignment = Assignment; + var currentModule = planner + .LocalCourse + .Modules + .First(m => + m.Assignments + .Select(a => a.Id) + .Contains(Assignment.Id) + ) ?? 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.Id != assignment.Id).ToArray() + } + : m + ).ToArray(); + + planner.LocalCourse = planner.LocalCourse with + { + Modules = newModules + }; + if(assignment.CanvasId != null && planner.LocalCourse.CanvasId != null) + { + ulong courseId = planner.LocalCourse.CanvasId ?? throw new Exception("cannot delete if no course id"); + await canvas.Assignments.Delete(courseId, assignment); + } + } + } } @@ -156,6 +191,11 @@