@using Management.Web.Shared.Components @inject CoursePlanner planner @code { [Parameter] [EditorRequired] public LocalAssignment Assignment { get; set; } = default!; [Parameter] [EditorRequired] public bool Show { get; set; } [Parameter] public Action OnHide { get; set; } = () => { }; public Modal? AssignmentModal { get; set; } = null; private bool useTemplate { get; set; } = false; private string? templateId { get; set; } public Dictionary templateVariables { get; set; } = new Dictionary(); private string description { get; set; } = String.Empty; 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(); protected override void OnParametersSet() { if(Show) { AssignmentModal?.Show(); } name = Assignment.Name; description = Assignment.Description; lockAtDueDate = Assignment.LockAtDueDate; rubric = Assignment.Rubric; submissionTypes = Assignment.SubmissionTypes; templateId = Assignment.TemplateId; useTemplate = Assignment.UseTemplate; templateVariables = Assignment.TemplateVariables; } private void submitHandler() { var totalRubricPoints = rubric .Where(r => !r.Label.Contains(RubricItem.extraCredit)) .Select(s => s.Points) .Sum(); var newAssignment = Assignment with { Name=name, Description=description, LockAtDueDate=lockAtDueDate, Rubric=rubric, PointsPossible=totalRubricPoints, SubmissionTypes=submissionTypes, UseTemplate=useTemplate, TemplateId=templateId, TemplateVariables=templateVariables, }; if(planner.LocalCourse != null) { var currentModule = planner .LocalCourse .Modules .First(m => m.Assignments .Select(a => a.Id) .Contains(Assignment.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(); } private void updateRubric(IEnumerable newRubric) { rubric = newRubric; StateHasChanged(); } private void SetTypes(IEnumerable newTypes) { submissionTypes = newTypes; StateHasChanged(); } } @Assignment.Name