diff --git a/WorkManagementTool/Components/Homework/HomeworkListing.razor b/WorkManagementTool/Components/Homework/HomeworkListing.razor
index 13bcefa..b9384c3 100644
--- a/WorkManagementTool/Components/Homework/HomeworkListing.razor
+++ b/WorkManagementTool/Components/Homework/HomeworkListing.razor
@@ -33,8 +33,13 @@ else
@foreach (var homework in homeworks)
{
- @homework.Title - Due: @homework.DueDate.ToShortDateString() - Completed: @(homework.IsCompleted ? "Yes" : "No")
-
+
+ @homework.Title - Due: @homework.DueDate.ToShortDateString() - Completed: @(homework.IsCompleted ? "Yes" : "No")
+
+
+
+
+
}
@@ -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();
diff --git a/WorkManagementTool/Components/Homework/HomeworkToogling.razor b/WorkManagementTool/Components/Homework/HomeworkToogling.razor
new file mode 100644
index 0000000..3845a4f
--- /dev/null
+++ b/WorkManagementTool/Components/Homework/HomeworkToogling.razor
@@ -0,0 +1,25 @@
+@rendermode InteractiveServer
+@attribute [Authorize]
+
+@using Microsoft.AspNetCore.Authorization
+@using WorkManagementTool.Services
+@inject HomeworkService HomeworkService
+
+
+
+@code {
+ [Parameter]
+ public int IdHomework { get; set; }
+
+ [Parameter]
+ public EventCallback 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);
+ }
+}
diff --git a/WorkManagementTool/Data/Entities/Homework.cs b/WorkManagementTool/Data/Entities/Homework.cs
index 2fecf41..4d0b27f 100644
--- a/WorkManagementTool/Data/Entities/Homework.cs
+++ b/WorkManagementTool/Data/Entities/Homework.cs
@@ -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!;
diff --git a/WorkManagementTool/Services/HomeworkService.cs b/WorkManagementTool/Services/HomeworkService.cs
index 0219ebe..f25726b 100644
--- a/WorkManagementTool/Services/HomeworkService.cs
+++ b/WorkManagementTool/Services/HomeworkService.cs
@@ -65,5 +65,17 @@ namespace WorkManagementTool.Services
await _context.SaveChangesAsync();
}
}
+
+ public async Task ToggleHomeworkStatusAsync(int id)
+ {
+ var homework = await _context.Homeworks.FindAsync(id);
+ if (homework != null)
+ {
+ homework.IsCompleted = !homework.IsCompleted;
+ await _context.SaveChangesAsync();
+ return true;
+ }
+ return false;
+ }
}
}