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)
|
@foreach (var homework in homeworks)
|
||||||
{
|
{
|
||||||
<li>
|
<li>
|
||||||
<strong>@homework.Title</strong> - Due: @homework.DueDate.ToShortDateString() - Completed: @(homework.IsCompleted ? "Yes" : "No")
|
<p>
|
||||||
<HomeworkDeletion HomeworkId="@homework.Id" OnDeleted="HandleDeletion" />
|
<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>
|
</li>
|
||||||
}
|
}
|
||||||
</ul>
|
</ul>
|
||||||
@@ -57,6 +62,17 @@ else
|
|||||||
StateHasChanged();
|
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()
|
private async Task LoadHomeworksAsync()
|
||||||
{
|
{
|
||||||
homeworks = new();
|
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")]
|
[MinLength(3, ErrorMessage = "Title must be at least 3 caracters")]
|
||||||
public required string Title { get; set; } = null!;
|
public required string Title { get; set; } = null!;
|
||||||
[MaxLength(1000, ErrorMessage = "Description must be less than 1000 caracters")]
|
[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; }
|
public string? Description { get; set; }
|
||||||
[Required]
|
[Required]
|
||||||
[DataType(DataType.Date)]
|
[DataType(DataType.Date)]
|
||||||
public required DateTime DueDate { get; set; }
|
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 SchoolSubject SchoolSubject { get; set; } = null!;
|
||||||
public string? DeliveryMethod { get; set; }
|
public string? DeliveryMethod { get; set; }
|
||||||
public ApplicationUser CreatedBy { get; set; } = null!;
|
public ApplicationUser CreatedBy { get; set; } = null!;
|
||||||
|
|||||||
@@ -65,5 +65,17 @@ namespace WorkManagementTool.Services
|
|||||||
await _context.SaveChangesAsync();
|
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