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 96f633c..690ee14 100644 Binary files a/WorkManagementTool/work_management.db-shm and b/WorkManagementTool/work_management.db-shm differ diff --git a/WorkManagementTool/work_management.db-wal b/WorkManagementTool/work_management.db-wal index ee497b8..010feb5 100644 Binary files a/WorkManagementTool/work_management.db-wal and b/WorkManagementTool/work_management.db-wal differ