Fix: prevent school subject deletion if they have homework
Some checks failed
SonarQube Scan / SonarQube Trigger (push) Has been cancelled

This commit is contained in:
Namu
2025-11-30 23:07:32 +01:00
parent f9809fb0ba
commit 97177673e2
6 changed files with 40 additions and 2 deletions

View File

@@ -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);
}
}

View File

@@ -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);

View File

@@ -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; }
}
}

View File

@@ -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)