Fix: prevent school subject deletion if they have homework
Some checks failed
SonarQube Scan / SonarQube Trigger (push) Has been cancelled
Some checks failed
SonarQube Scan / SonarQube Trigger (push) Has been cancelled
This commit is contained in:
@@ -0,0 +1,21 @@
|
||||
@using Microsoft.AspNetCore.Authorization
|
||||
@attribute [Authorize]
|
||||
@using WorkManagementTool.Services
|
||||
@using WorkManagementTool.Data.Entities
|
||||
@inject HomeworkService HomeworkService
|
||||
|
||||
<button class="btn btn-danger">-</button>
|
||||
|
||||
@code {
|
||||
[Parameter]
|
||||
public int HomeworkId { get; set; }
|
||||
|
||||
[Parameter]
|
||||
public EventCallback<int> OnDeleted { get; set; }
|
||||
|
||||
private async Task Delete(MouseEventArgs e)
|
||||
{
|
||||
await HomeworkService.DeleteHomeworkAsync(HomeworkId);
|
||||
await OnDeleted.InvokeAsync(HomeworkId);
|
||||
}
|
||||
}
|
||||
@@ -5,7 +5,10 @@
|
||||
@using WorkManagementTool.Services
|
||||
@inject SchoolSubjectService SchoolSubjectService
|
||||
|
||||
<button type="button" class="btn btn-danger" @onclick="Delete">-</button>
|
||||
@if (!hasHomeworks)
|
||||
{
|
||||
<button type="button" class="btn btn-danger" @onclick="Delete">-</button>
|
||||
}
|
||||
|
||||
@code {
|
||||
[Parameter]
|
||||
@@ -14,6 +17,16 @@
|
||||
[Parameter]
|
||||
public EventCallback<int> OnDeleted { get; set; }
|
||||
|
||||
private bool hasHomeworks;
|
||||
|
||||
protected override async Task OnInitializedAsync()
|
||||
{
|
||||
var schoolSubject = await SchoolSubjectService.GetSchoolSubjectByIdAsync(Id);
|
||||
|
||||
hasHomeworks = schoolSubject is not null
|
||||
&& schoolSubject.Homeworks?.Count > 0;
|
||||
}
|
||||
|
||||
private async Task Delete(MouseEventArgs e)
|
||||
{
|
||||
await SchoolSubjectService.DeleteSchoolSubjectAsync(Id);
|
||||
|
||||
@@ -13,5 +13,6 @@ namespace WorkManagementTool.Data.Entities
|
||||
public DateTime CreatedAt { get; set; } = DateTime.UtcNow;
|
||||
public bool Deleted { get; set; } = false;
|
||||
public ApplicationUser CreatedBy { get; set; } = null!;
|
||||
public List<Homework>? Homeworks { get; set; }
|
||||
}
|
||||
}
|
||||
|
||||
@@ -20,7 +20,10 @@ namespace WorkManagementTool.Services
|
||||
|
||||
public async Task<SchoolSubject?> GetSchoolSubjectByIdAsync(int id)
|
||||
{
|
||||
return await _context.SchoolSubjects.FindAsync(id);
|
||||
return await _context.SchoolSubjects
|
||||
.Include(i => i.Homeworks)
|
||||
.Where(w => w.Id == id)
|
||||
.FirstOrDefaultAsync();
|
||||
}
|
||||
|
||||
public async Task AddSchoolSubjectAsync(SchoolSubject subject)
|
||||
|
||||
Binary file not shown.
Binary file not shown.
Reference in New Issue
Block a user