@using Management.Web.Shared.Components @inject CoursePlanner planner @inject CanvasService canvas @inject AssignmentEditorContext assignmentContext @code { protected override void OnInitialized() { assignmentContext.StateHasChanged += reload; } private void reload() { if (assignmentContext.Assignment != null) { AssignmentModal?.Show(); name = assignmentContext.Assignment.Name; lockAtDueDate = assignmentContext.Assignment.LockAtDueDate; rubric = assignmentContext.Assignment.Rubric; submissionTypes = assignmentContext.Assignment.SubmissionTypes; } this.InvokeAsync(this.StateHasChanged); } public void Dispose() { assignmentContext.StateHasChanged -= reload; } [Parameter] public Action OnHide { get; set; } = () => { }; public Modal? AssignmentModal { get; set; } = null; private string name { get; set; } = String.Empty; private bool lockAtDueDate { get; set; } private IEnumerable rubric { get; set; } = Enumerable.Empty(); private IEnumerable submissionTypes { get; set; } = Enumerable.Empty(); private void submitHandler() { if(assignmentContext.Assignment != null) { var totalRubricPoints = rubric .Where(r => !r.Label.Contains(RubricItem.extraCredit)) .Select(s => s.Points) .Sum(); var newAssignment = assignmentContext.Assignment with { Name = name, LockAtDueDate = lockAtDueDate, Rubric = rubric, PointsPossible = totalRubricPoints, SubmissionTypes = submissionTypes, }; if (planner.LocalCourse != null) { var currentModule = planner .LocalCourse .Modules .First(m => m.Assignments .Select(a => a.Id) .Contains(newAssignment.Id) ) ?? throw new Exception("could not find current module in assignment form"); var updatedModules = planner.LocalCourse.Modules.Select(m => m.Name == currentModule.Name ? currentModule with { Assignments = currentModule.Assignments.Select(a => a.Id == newAssignment.Id ? newAssignment : a ).ToArray() } : m ).ToArray(); planner.LocalCourse = planner.LocalCourse with { Modules = updatedModules }; } AssignmentModal?.Hide(); assignmentContext.Assignment = null; } } private void updateRubric(IEnumerable newRubric) { rubric = newRubric; StateHasChanged(); } private void SetTypes(IEnumerable newTypes) { submissionTypes = newTypes; StateHasChanged(); } private async Task HandleDelete() { if (planner.LocalCourse != null && assignmentContext.Assignment != null) { var assignment = assignmentContext.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); } } } } @assignmentContext.Assignment?.Name @if(assignmentContext.Assignment != null) {
}