From 97177673e2a4a279175be9bb2561bce76785eccb Mon Sep 17 00:00:00 2001 From: Namu Date: Sun, 30 Nov 2025 23:07:32 +0100 Subject: [PATCH] Fix: prevent school subject deletion if they have homework --- .../Homework/HomeworkDeletion.razor | 21 ++++++++++++++++++ .../SchoolSubject/SchoolSubjectDeletion.razor | 15 ++++++++++++- .../Data/Entities/SchoolSubject.cs | 1 + .../Services/SchoolSubjectService.cs | 5 ++++- WorkManagementTool/work_management.db-shm | Bin 32768 -> 32768 bytes WorkManagementTool/work_management.db-wal | Bin 16512 -> 45352 bytes 6 files changed, 40 insertions(+), 2 deletions(-) create mode 100644 WorkManagementTool/Components/Homework/HomeworkDeletion.razor diff --git a/WorkManagementTool/Components/Homework/HomeworkDeletion.razor b/WorkManagementTool/Components/Homework/HomeworkDeletion.razor new file mode 100644 index 0000000..40eec88 --- /dev/null +++ b/WorkManagementTool/Components/Homework/HomeworkDeletion.razor @@ -0,0 +1,21 @@ +@using Microsoft.AspNetCore.Authorization +@attribute [Authorize] +@using WorkManagementTool.Services +@using WorkManagementTool.Data.Entities +@inject HomeworkService HomeworkService + + + +@code { + [Parameter] + public int HomeworkId { get; set; } + + [Parameter] + public EventCallback OnDeleted { get; set; } + + private async Task Delete(MouseEventArgs e) + { + await HomeworkService.DeleteHomeworkAsync(HomeworkId); + await OnDeleted.InvokeAsync(HomeworkId); + } +} diff --git a/WorkManagementTool/Components/SchoolSubject/SchoolSubjectDeletion.razor b/WorkManagementTool/Components/SchoolSubject/SchoolSubjectDeletion.razor index 4307f2d..99f64b6 100644 --- a/WorkManagementTool/Components/SchoolSubject/SchoolSubjectDeletion.razor +++ b/WorkManagementTool/Components/SchoolSubject/SchoolSubjectDeletion.razor @@ -5,7 +5,10 @@ @using WorkManagementTool.Services @inject SchoolSubjectService SchoolSubjectService - +@if (!hasHomeworks) +{ + +} @code { [Parameter] @@ -14,6 +17,16 @@ [Parameter] public EventCallback 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); diff --git a/WorkManagementTool/Data/Entities/SchoolSubject.cs b/WorkManagementTool/Data/Entities/SchoolSubject.cs index 61766ed..2353464 100644 --- a/WorkManagementTool/Data/Entities/SchoolSubject.cs +++ b/WorkManagementTool/Data/Entities/SchoolSubject.cs @@ -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? Homeworks { get; set; } } } diff --git a/WorkManagementTool/Services/SchoolSubjectService.cs b/WorkManagementTool/Services/SchoolSubjectService.cs index e69f40e..7fa02b5 100644 --- a/WorkManagementTool/Services/SchoolSubjectService.cs +++ b/WorkManagementTool/Services/SchoolSubjectService.cs @@ -20,7 +20,10 @@ namespace WorkManagementTool.Services public async Task 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) diff --git a/WorkManagementTool/work_management.db-shm b/WorkManagementTool/work_management.db-shm index 96f633caa013dd5a1d0b781a6e5256a248718b9f..690ee14c1dfa6a5c9e7446b13da0b408e4768443 100644 GIT binary patch delta 210 zcmZo@U}|V!s+V}A%K!t63=9I?K#md+zmie!ioDK|Y@=(ex#G;%Cw6X&)Ve2k`;e+0 zW;V#&|40BT&cwhyu~A%-9mwSXVmTm|2VxK(%-*>f7HrN0F delta 161 zcmZo@U}|V!s+V}A%K!t63=9G+K#md+JO94EvgC6`mW{5l=87|4pS+MO$(@o`w~JKu qFtb7C{zn2(aV7?qiH+hLx5&9nJRr0Al8b`C#sj}NHou7#Q33!P%{H9? diff --git a/WorkManagementTool/work_management.db-wal b/WorkManagementTool/work_management.db-wal index ee497b8f56788412ebfcc827e660f3a2ca4a3a14..010feb5406374519ded7da92eaa4183d50635c3f 100644 GIT binary patch delta 882 zcmZo@WL)uxX+wj95(5JRI}kJ2=o)LTIP>+1xlQkG<&%xSc!6S!{5%Z&JR1X<`0E=B z83jY-fq!qPa^ zs3bo((V;>wttiCb*U=$D&n*a3#4*qj2s|AfBNNj>ELX>r;POgmqkLoU3{PY25R3An zdN-e-0zWU)U~f0mG}p?Y;8dTqq>5ZKCy!L4tbkxk!+2=di3mTU%pK zZ%?3|t^vj_u7S=j?ok0gA-=wDUS>`%ks*PB5k{8DW@agAsk#QqhNikENroo67AD3< zx+#{4MusLyspbZzrobTJfP{?%BygCvcsG9da9ElP95^=^_-||sJiij0G z4JC3p&V2h;IJ5RAuE^yaCXt(%lxCD-l9r@vVVP{MYhq}UqHB?4mZF=Sl4P8mYHVR< nYHoyx325Z*xt9G$=P!F9;V?ysiY|4TSIHdLBQdn`qQoEopo{$B delta 9 QcmZ4Sh^e8GaYKUx02Sy1{{R30