added delete support for assignments

This commit is contained in:
2023-08-07 18:41:04 -06:00
parent 224664c7a3
commit 7a2ee58617
9 changed files with 208 additions and 40 deletions

View File

@@ -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);
}
}
}
}
<Modal @ref="AssignmentModal" OnHide="@(() => OnHide())">
@@ -156,6 +191,11 @@
</form>
</Body>
<Footer>
<ConfirmationModal
Label="Delete"
Class="btn btn-danger"
OnConfirmAsync="HandleDelete"
/>
<button class="btn btn-primary" @onclick="submitHandler">
Save
</button>

View File

@@ -4,17 +4,19 @@
{
private IEnumerable<string> _types { get; set; } = Enumerable.Empty<string>();
[Parameter, EditorRequired]
public IEnumerable<string> Types {
get => _types;
set
public IEnumerable<string> Types { get; set; } = Enumerable.Empty<string>();
[Parameter, EditorRequired]
public Action<IEnumerable<string>> SetTypes { get; set; } = (_) => {};
protected override void OnParametersSet()
{
if (!Types.SequenceEqual(_types))
{
_types = value;
_types = Types;
renderKey++;
}
}
[Parameter, EditorRequired]
public Action<IEnumerable<string>> SetTypes { get; set; } = (_) => {};
private string getLabel(string type)
{
return type.ToString().Replace("_", "") + "switch";
@@ -23,8 +25,8 @@
private bool discussionIsSelected
{
get => Types.FirstOrDefault(
t => t == SubmissionType.DISCUSSION_TOPIC
) != null;
t => t == SubmissionType.DISCUSSION_TOPIC
) != null;
}
private int renderKey {get; set; } = 1;
}

View File

@@ -0,0 +1,81 @@
@using Management.Web.Shared.Components
@namespace Management.Web.Shared.Components
@code {
[Parameter]
public Action? OnConfirm { get; init; }
[Parameter]
public Action? OnDeny { get; init; }
[Parameter]
public Func<Task>? OnConfirmAsync { get; init; }
[Parameter]
public Func<Task>? OnDenyAsync { get; init; }
[Parameter]
[EditorRequired]
public string Label { get; set; } = "";
[Parameter]
[EditorRequired]
public string Class { get; set; } = "";
private Modal? modal { get; set; } = null;
private bool doingAsyncThings { get; set; } = false;
private async Task HandleDeny()
{
if(OnDeny != null)
OnDeny();
if(OnDenyAsync != null)
{
doingAsyncThings = true;
await OnDenyAsync();
doingAsyncThings = false;
}
modal?.Hide();
}
private async Task HandleConfirm()
{
if(OnConfirm != null)
OnConfirm();
if(OnConfirmAsync != null)
{
doingAsyncThings = true;
await OnConfirmAsync();
doingAsyncThings = false;
}
modal?.Hide();
}
}
<button
class="btn btn-danger"
@onclick="() => modal?.Show()"
>
@Label
</button>
<Modal @ref="modal">
<Title>Are you sure you want to @Label?</Title>
<Body>
<div class="text-center">
<button
class="btn btn-secondary"
@onclick="HandleDeny"
>
no
</button>
<button
class="btn btn-primary"
@onclick="HandleConfirm"
>
yes
</button>
</div>
</Body>
<Footer>
@if(doingAsyncThings)
{
<Spinnner />
}
</Footer>
</Modal>