fixed assignment save bug

This commit is contained in:
2023-08-07 16:12:48 -06:00
parent 1ab0676881
commit 224664c7a3
8 changed files with 111 additions and 52 deletions

View File

@@ -3,7 +3,6 @@
@inject CoursePlanner planner
@code {
public LocalModule Module { get; set; } = default!;
[Parameter]
[EditorRequired]
@@ -54,6 +53,7 @@
.Select(s => s.Points)
.Sum();
var newAssignment = Assignment with
{
Name=name,
@@ -69,20 +69,29 @@
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=planner.LocalCourse.Modules.Select(m =>
m.Name != Module.Name
? m
: Module with
{
Assignments=Module.Assignments.Select(a =>
a.Id == newAssignment.Id
? newAssignment
: a
)
}
)
Modules=updatedModules
};
}
AssignmentModal?.Hide();

View File

@@ -96,6 +96,9 @@
<h5>Assignments</h5>
</div>
<div class="col-auto">
<NewQuiz
Module="Module"
/>
<NewAssignment
Module="Module"
/>

View File

@@ -33,16 +33,17 @@
if(planner.LocalCourse != null)
{
var newModules =planner.LocalCourse.Modules.Select(m =>
m.Name != Module.Name
? m
: Module with
{
Assignments=Module.Assignments.Append(newAssignment)
}
);
planner.LocalCourse = planner.LocalCourse with
{
Modules=planner.LocalCourse.Modules.Select(m =>
m.Name != Module.Name
? m
: Module with
{
Assignments=Module.Assignments.Append(newAssignment)
}
)
Modules=newModules
};
}
modal?.Hide();
@@ -52,7 +53,7 @@
class="btn btn-outline-secondary"
@onclick="() => modal?.Show()"
>
New Assignment
+ Assignment
</button>
<Modal @ref="modal">
@@ -69,7 +70,7 @@
class="btn btn-primary"
@onclick="submitHandler"
>
Save changes
Create Assignment
</button>
</Footer>
</Modal>

View File

@@ -0,0 +1,66 @@
@using Management.Web.Shared.Components
@inject CoursePlanner planner
@code {
[Parameter]
[EditorRequired]
public LocalModule Module { get; set; } = default!;
[Required]
[StringLength(50, ErrorMessage = "Name too long (50 character limit).")]
private string Name { get; set; } = "";
private Modal? modal { get; set; } = null;
private void submitHandler()
{
Console.WriteLine("new quiz");
var newQuiz = new LocalQuiz
{
Id = Guid.NewGuid().ToString(),
Name=Name,
};
if(planner.LocalCourse != null)
{
var newModules = planner.LocalCourse.Modules.Select(m =>
m.Name != Module.Name
? m
: Module with
{
Quizzes=Module.Quizzes.Append(newQuiz)
}
);
planner.LocalCourse = planner.LocalCourse with
{
Modules=newModules
};
}
modal?.Hide();
}
}
<button
class="btn btn-outline-secondary"
@onclick="() => modal?.Show()"
>
+ Quiz
</button>
<Modal @ref="modal">
<Title>New Quiz</Title>
<Body>
<form @onsubmit:preventDefault="true" @onsubmit="submitHandler">
<label for="Assignment Name">Name</label>
<input id="moduleName" class="form-control" @bind="Name" />
</form>
</Body>
<Footer>
<button
class="btn btn-primary"
@onclick="submitHandler"
>
CreateQuiz
</button>
</Footer>
</Modal>