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
|
@using WorkManagementTool.Services
|
||||||
@inject SchoolSubjectService SchoolSubjectService
|
@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 {
|
@code {
|
||||||
[Parameter]
|
[Parameter]
|
||||||
@@ -14,6 +17,16 @@
|
|||||||
[Parameter]
|
[Parameter]
|
||||||
public EventCallback<int> OnDeleted { get; set; }
|
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)
|
private async Task Delete(MouseEventArgs e)
|
||||||
{
|
{
|
||||||
await SchoolSubjectService.DeleteSchoolSubjectAsync(Id);
|
await SchoolSubjectService.DeleteSchoolSubjectAsync(Id);
|
||||||
|
|||||||
@@ -13,5 +13,6 @@ namespace WorkManagementTool.Data.Entities
|
|||||||
public DateTime CreatedAt { get; set; } = DateTime.UtcNow;
|
public DateTime CreatedAt { get; set; } = DateTime.UtcNow;
|
||||||
public bool Deleted { get; set; } = false;
|
public bool Deleted { get; set; } = false;
|
||||||
public ApplicationUser CreatedBy { get; set; } = null!;
|
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)
|
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)
|
public async Task AddSchoolSubjectAsync(SchoolSubject subject)
|
||||||
|
|||||||
Binary file not shown.
Binary file not shown.
Reference in New Issue
Block a user