Feat: Enable toogling homework states
All checks were successful
SonarQube Scan / SonarQube Trigger (push) Successful in 35s
All checks were successful
SonarQube Scan / SonarQube Trigger (push) Successful in 35s
This commit is contained in:
@@ -33,8 +33,13 @@ else
|
||||
@foreach (var homework in homeworks)
|
||||
{
|
||||
<li>
|
||||
<strong>@homework.Title</strong> - Due: @homework.DueDate.ToShortDateString() - Completed: @(homework.IsCompleted ? "Yes" : "No")
|
||||
<HomeworkDeletion HomeworkId="@homework.Id" OnDeleted="HandleDeletion" />
|
||||
<p>
|
||||
<strong>@homework.Title</strong> - Due: @homework.DueDate.ToShortDateString() - Completed: @(homework.IsCompleted ? "Yes" : "No")
|
||||
</p>
|
||||
<div class="btn-group">
|
||||
<HomeworkDeletion HomeworkId="@homework.Id" OnDeleted="HandleDeletion" />
|
||||
<HomeworkToogling IdHomework="@homework.Id" OnToogle="LoadHomeworksAsync" />
|
||||
</div>
|
||||
</li>
|
||||
}
|
||||
</ul>
|
||||
@@ -57,6 +62,17 @@ else
|
||||
StateHasChanged();
|
||||
}
|
||||
|
||||
private async Task HandleToogle(int toogleId)
|
||||
{
|
||||
var toogledHomework = homeworks?
|
||||
.Where(w => w.Id == toogleId)
|
||||
.FirstOrDefault();
|
||||
|
||||
toogledHomework?.IsCompleted = !toogledHomework.IsCompleted;
|
||||
|
||||
StateHasChanged();
|
||||
}
|
||||
|
||||
private async Task LoadHomeworksAsync()
|
||||
{
|
||||
homeworks = new();
|
||||
|
||||
@@ -0,0 +1,25 @@
|
||||
@rendermode InteractiveServer
|
||||
@attribute [Authorize]
|
||||
|
||||
@using Microsoft.AspNetCore.Authorization
|
||||
@using WorkManagementTool.Services
|
||||
@inject HomeworkService HomeworkService
|
||||
|
||||
<button class="btn btn-primary" @onclick="ToggleHomeworkStatus">Toogle done/undone</button>
|
||||
|
||||
@code {
|
||||
[Parameter]
|
||||
public int IdHomework { get; set; }
|
||||
|
||||
[Parameter]
|
||||
public EventCallback<int> OnToogle { get; set; }
|
||||
|
||||
private bool? Worked { get; set; } = null;
|
||||
|
||||
public async Task ToggleHomeworkStatus(MouseEventArgs e)
|
||||
{
|
||||
Worked = await HomeworkService.ToggleHomeworkStatusAsync(IdHomework);
|
||||
if (Worked.HasValue && Worked.Value)
|
||||
await OnToogle.InvokeAsync(IdHomework);
|
||||
}
|
||||
}
|
||||
@@ -10,12 +10,11 @@ namespace WorkManagementTool.Data.Entities
|
||||
[MinLength(3, ErrorMessage = "Title must be at least 3 caracters")]
|
||||
public required string Title { get; set; } = null!;
|
||||
[MaxLength(1000, ErrorMessage = "Description must be less than 1000 caracters")]
|
||||
[MinLength(3, ErrorMessage = "Description must be at least 3 caracters")]
|
||||
public string? Description { get; set; }
|
||||
[Required]
|
||||
[DataType(DataType.Date)]
|
||||
public required DateTime DueDate { get; set; }
|
||||
public required bool IsCompleted { get; set; }
|
||||
public bool IsCompleted { get; set; } = false;
|
||||
public SchoolSubject SchoolSubject { get; set; } = null!;
|
||||
public string? DeliveryMethod { get; set; }
|
||||
public ApplicationUser CreatedBy { get; set; } = null!;
|
||||
|
||||
@@ -65,5 +65,17 @@ namespace WorkManagementTool.Services
|
||||
await _context.SaveChangesAsync();
|
||||
}
|
||||
}
|
||||
|
||||
public async Task<bool> ToggleHomeworkStatusAsync(int id)
|
||||
{
|
||||
var homework = await _context.Homeworks.FindAsync(id);
|
||||
if (homework != null)
|
||||
{
|
||||
homework.IsCompleted = !homework.IsCompleted;
|
||||
await _context.SaveChangesAsync();
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user