diff --git a/WorkManagementTool/Components/Project/ProjectCreation.razor b/WorkManagementTool/Components/Project/ProjectCreation.razor
new file mode 100644
index 0000000..af13f94
--- /dev/null
+++ b/WorkManagementTool/Components/Project/ProjectCreation.razor
@@ -0,0 +1,42 @@
+@page "/projects/creation"
+
+@using Microsoft.AspNetCore.Authorization
+@attribute [Authorize]
+
+@rendermode InteractiveServer
+
+@using WorkManagementTool.Services;
+@using WorkManagementTool.Data.Entities;
+
+@inject ProjectService ProjectService
+@inject NavigationManager NavigationManager
+
+
ProjectCreation
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+@code {
+ private Project Model = new();
+
+ public async Task CreateProject()
+ {
+ await ProjectService.AddProjectAsync(Model);
+
+ NavigationManager.NavigateTo("/projects");
+ }
+}
diff --git a/WorkManagementTool/Components/Project/ProjectDeletion.razor b/WorkManagementTool/Components/Project/ProjectDeletion.razor
new file mode 100644
index 0000000..2238790
--- /dev/null
+++ b/WorkManagementTool/Components/Project/ProjectDeletion.razor
@@ -0,0 +1,30 @@
+@using Microsoft.AspNetCore.Authorization
+@using WorkManagementTool.Data.Entities;
+@using WorkManagementTool.Services;
+
+@inject ProjectService ProjectService
+
+@attribute [Authorize]
+
+@rendermode InteractiveServer
+
+
+
+@code {
+ [Parameter]
+ public int ProjectId { get; set; }
+
+ public async Task DeleteProjectAsync(MouseEventArgs e)
+ {
+ var project = await ProjectService.GetProjectByIdAsync(ProjectId);
+ if (project is null)
+ throw new ArgumentNullException(nameof(project));
+
+ await ProjectService.DeleteProjectAsync(project.Id);
+
+ await OnDeleted.InvokeAsync(ProjectId);
+ }
+
+ [Parameter]
+ public EventCallback
OnDeleted { get; set; }
+}
diff --git a/WorkManagementTool/Components/Project/ProjectListing.razor b/WorkManagementTool/Components/Project/ProjectListing.razor
new file mode 100644
index 0000000..35d5d15
--- /dev/null
+++ b/WorkManagementTool/Components/Project/ProjectListing.razor
@@ -0,0 +1,50 @@
+@page "/projects"
+@using Microsoft.AspNetCore.Authorization
+@using WorkManagementTool.Services;
+@using WorkManagementTool.Data.Entities;
+
+@rendermode InteractiveServer
+
+@attribute [Authorize]
+
+@inject ProjectService ProjectService
+
+Create project
+
+@if (projects is null || projects.Count == 0)
+{
+ No projects found
+}
+else
+{
+ Project list
+
+
+ @foreach (var project in projects)
+ {
+ -
+
@project.Name
+ @project.Description
+
+
+ }
+
+}
+
+@code {
+ private List projects = new();
+
+ protected override async Task OnInitializedAsync()
+ {
+ projects = await ProjectService.GetAllProjectsAsync();
+ }
+
+ private async Task HandleDeletion(int projectId)
+ {
+ projects.RemoveAll(p => p.Id == projectId);
+ StateHasChanged();
+ }
+}
diff --git a/WorkManagementTool/Components/ProjectTask/ProjectTaskListing.razor b/WorkManagementTool/Components/ProjectTask/ProjectTaskListing.razor
new file mode 100644
index 0000000..b60078d
--- /dev/null
+++ b/WorkManagementTool/Components/ProjectTask/ProjectTaskListing.razor
@@ -0,0 +1,31 @@
+@page "/projects/tasks/{ProjectId:int}"
+@using Microsoft.AspNetCore.Authorization
+@using WorkManagementTool.Data.Entities;
+@using WorkManagementTool.Services;
+
+@attribute [Authorize]
+
+@rendermode InteractiveServer
+@inject ProjectService ProjectService
+
+@if (Model is null)
+{
+ Project not found
+}
+else
+{
+ @ProjectId
+ @Model.Name
+}
+
+@code {
+ [Parameter]
+ public int ProjectId { get; set; }
+
+ public Project? Model { get; set; }
+
+ protected async override Task OnInitializedAsync()
+ {
+ Model = await ProjectService.GetProjectByIdAsync(ProjectId);
+ }
+}
diff --git a/WorkManagementTool/Data/Entities/Project.cs b/WorkManagementTool/Data/Entities/Project.cs
index 0d66463..7a3bd52 100644
--- a/WorkManagementTool/Data/Entities/Project.cs
+++ b/WorkManagementTool/Data/Entities/Project.cs
@@ -6,5 +6,6 @@
public string Name { get; set; } = null!;
public string? Description { get; set; }
public List Tasks { get; set; } = new();
+ public DateTime CreatedAt { get; set; } = DateTime.UtcNow;
}
}
diff --git a/WorkManagementTool/Data/Entities/ProjectTask.cs b/WorkManagementTool/Data/Entities/ProjectTask.cs
index f55766d..7914eec 100644
--- a/WorkManagementTool/Data/Entities/ProjectTask.cs
+++ b/WorkManagementTool/Data/Entities/ProjectTask.cs
@@ -9,5 +9,6 @@
public bool IsCompleted { get; set; }
public List? NextTasks { get; set; }
public Project Project { get; set; } = null!;
+ public DateTime CreatedAt { get; set; } = DateTime.UtcNow;
}
}
diff --git a/WorkManagementTool/Migrations/20251227192424_AddCreatedAtOnProjectAndProjectTask.Designer.cs b/WorkManagementTool/Migrations/20251227192424_AddCreatedAtOnProjectAndProjectTask.Designer.cs
new file mode 100644
index 0000000..da90e10
--- /dev/null
+++ b/WorkManagementTool/Migrations/20251227192424_AddCreatedAtOnProjectAndProjectTask.Designer.cs
@@ -0,0 +1,528 @@
+//
+using System;
+using Microsoft.EntityFrameworkCore;
+using Microsoft.EntityFrameworkCore.Infrastructure;
+using Microsoft.EntityFrameworkCore.Migrations;
+using Microsoft.EntityFrameworkCore.Storage.ValueConversion;
+using WorkManagementTool.Data;
+
+#nullable disable
+
+namespace WorkManagementTool.Migrations
+{
+ [DbContext(typeof(ApplicationDbContext))]
+ [Migration("20251227192424_AddCreatedAtOnProjectAndProjectTask")]
+ partial class AddCreatedAtOnProjectAndProjectTask
+ {
+ ///
+ protected override void BuildTargetModel(ModelBuilder modelBuilder)
+ {
+#pragma warning disable 612, 618
+ modelBuilder.HasAnnotation("ProductVersion", "10.0.0");
+
+ modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityRole", b =>
+ {
+ b.Property("Id")
+ .HasColumnType("TEXT");
+
+ b.Property("ConcurrencyStamp")
+ .IsConcurrencyToken()
+ .HasColumnType("TEXT");
+
+ b.Property("Name")
+ .HasMaxLength(256)
+ .HasColumnType("TEXT");
+
+ b.Property("NormalizedName")
+ .HasMaxLength(256)
+ .HasColumnType("TEXT");
+
+ b.HasKey("Id");
+
+ b.HasIndex("NormalizedName")
+ .IsUnique()
+ .HasDatabaseName("RoleNameIndex");
+
+ b.ToTable("AspNetRoles", (string)null);
+ });
+
+ modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityRoleClaim", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("INTEGER");
+
+ b.Property("ClaimType")
+ .HasColumnType("TEXT");
+
+ b.Property("ClaimValue")
+ .HasColumnType("TEXT");
+
+ b.Property("RoleId")
+ .IsRequired()
+ .HasColumnType("TEXT");
+
+ b.HasKey("Id");
+
+ b.HasIndex("RoleId");
+
+ b.ToTable("AspNetRoleClaims", (string)null);
+ });
+
+ modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserClaim", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("INTEGER");
+
+ b.Property("ClaimType")
+ .HasColumnType("TEXT");
+
+ b.Property("ClaimValue")
+ .HasColumnType("TEXT");
+
+ b.Property("UserId")
+ .IsRequired()
+ .HasColumnType("TEXT");
+
+ b.HasKey("Id");
+
+ b.HasIndex("UserId");
+
+ b.ToTable("AspNetUserClaims", (string)null);
+ });
+
+ modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserLogin", b =>
+ {
+ b.Property("LoginProvider")
+ .HasMaxLength(128)
+ .HasColumnType("TEXT");
+
+ b.Property("ProviderKey")
+ .HasMaxLength(128)
+ .HasColumnType("TEXT");
+
+ b.Property("ProviderDisplayName")
+ .HasColumnType("TEXT");
+
+ b.Property("UserId")
+ .IsRequired()
+ .HasColumnType("TEXT");
+
+ b.HasKey("LoginProvider", "ProviderKey");
+
+ b.HasIndex("UserId");
+
+ b.ToTable("AspNetUserLogins", (string)null);
+ });
+
+ modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserPasskey", b =>
+ {
+ b.Property("CredentialId")
+ .HasMaxLength(1024)
+ .HasColumnType("BLOB");
+
+ b.Property("UserId")
+ .IsRequired()
+ .HasColumnType("TEXT");
+
+ b.HasKey("CredentialId");
+
+ b.HasIndex("UserId");
+
+ b.ToTable("AspNetUserPasskeys", (string)null);
+ });
+
+ modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserRole", b =>
+ {
+ b.Property("UserId")
+ .HasColumnType("TEXT");
+
+ b.Property("RoleId")
+ .HasColumnType("TEXT");
+
+ b.HasKey("UserId", "RoleId");
+
+ b.HasIndex("RoleId");
+
+ b.ToTable("AspNetUserRoles", (string)null);
+ });
+
+ modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserToken", b =>
+ {
+ b.Property("UserId")
+ .HasColumnType("TEXT");
+
+ b.Property("LoginProvider")
+ .HasMaxLength(128)
+ .HasColumnType("TEXT");
+
+ b.Property("Name")
+ .HasMaxLength(128)
+ .HasColumnType("TEXT");
+
+ b.Property("Value")
+ .HasColumnType("TEXT");
+
+ b.HasKey("UserId", "LoginProvider", "Name");
+
+ b.ToTable("AspNetUserTokens", (string)null);
+ });
+
+ modelBuilder.Entity("WorkManagementTool.Data.ApplicationUser", b =>
+ {
+ b.Property("Id")
+ .HasColumnType("TEXT");
+
+ b.Property("AccessFailedCount")
+ .HasColumnType("INTEGER");
+
+ b.Property("ConcurrencyStamp")
+ .IsConcurrencyToken()
+ .HasColumnType("TEXT");
+
+ b.Property("Email")
+ .HasMaxLength(256)
+ .HasColumnType("TEXT");
+
+ b.Property("EmailConfirmed")
+ .HasColumnType("INTEGER");
+
+ b.Property("LockoutEnabled")
+ .HasColumnType("INTEGER");
+
+ b.Property("LockoutEnd")
+ .HasColumnType("TEXT");
+
+ b.Property("NormalizedEmail")
+ .HasMaxLength(256)
+ .HasColumnType("TEXT");
+
+ b.Property("NormalizedUserName")
+ .HasMaxLength(256)
+ .HasColumnType("TEXT");
+
+ b.Property("PasswordHash")
+ .HasColumnType("TEXT");
+
+ b.Property("PhoneNumber")
+ .HasMaxLength(256)
+ .HasColumnType("TEXT");
+
+ b.Property("PhoneNumberConfirmed")
+ .HasColumnType("INTEGER");
+
+ b.Property("SecurityStamp")
+ .HasColumnType("TEXT");
+
+ b.Property("TwoFactorEnabled")
+ .HasColumnType("INTEGER");
+
+ b.Property("UserName")
+ .HasMaxLength(256)
+ .HasColumnType("TEXT");
+
+ b.HasKey("Id");
+
+ b.HasIndex("NormalizedEmail")
+ .HasDatabaseName("EmailIndex");
+
+ b.HasIndex("NormalizedUserName")
+ .IsUnique()
+ .HasDatabaseName("UserNameIndex");
+
+ b.ToTable("AspNetUsers", (string)null);
+ });
+
+ modelBuilder.Entity("WorkManagementTool.Data.Entities.Homework", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("INTEGER");
+
+ b.Property("CreatedAt")
+ .HasColumnType("TEXT");
+
+ b.Property("CreatedById")
+ .HasColumnType("TEXT");
+
+ b.Property("Deleted")
+ .HasColumnType("INTEGER");
+
+ b.Property("DeliveryMethod")
+ .HasColumnType("TEXT");
+
+ b.Property("Description")
+ .HasMaxLength(1000)
+ .HasColumnType("TEXT");
+
+ b.Property("DueDate")
+ .HasColumnType("TEXT");
+
+ b.Property("IsCompleted")
+ .HasColumnType("INTEGER");
+
+ b.Property("SchoolSubjectId")
+ .HasColumnType("INTEGER");
+
+ b.Property("Title")
+ .IsRequired()
+ .HasMaxLength(200)
+ .HasColumnType("TEXT");
+
+ b.HasKey("Id");
+
+ b.HasIndex("CreatedById");
+
+ b.HasIndex("SchoolSubjectId");
+
+ b.ToTable("Homeworks");
+ });
+
+ modelBuilder.Entity("WorkManagementTool.Data.Entities.Project", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("INTEGER");
+
+ b.Property("CreatedAt")
+ .HasColumnType("TEXT");
+
+ b.Property("Description")
+ .HasColumnType("TEXT");
+
+ b.Property("Name")
+ .IsRequired()
+ .HasColumnType("TEXT");
+
+ b.HasKey("Id");
+
+ b.ToTable("Projects");
+ });
+
+ modelBuilder.Entity("WorkManagementTool.Data.Entities.ProjectTask", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("INTEGER");
+
+ b.Property("CreatedAt")
+ .HasColumnType("TEXT");
+
+ b.Property("Description")
+ .HasColumnType("TEXT");
+
+ b.Property("DueDate")
+ .HasColumnType("TEXT");
+
+ b.Property("IsCompleted")
+ .HasColumnType("INTEGER");
+
+ b.Property("ProjectId")
+ .HasColumnType("INTEGER");
+
+ b.Property("ProjectTaskId")
+ .HasColumnType("INTEGER");
+
+ b.Property("Title")
+ .IsRequired()
+ .HasColumnType("TEXT");
+
+ b.HasKey("Id");
+
+ b.HasIndex("ProjectId");
+
+ b.HasIndex("ProjectTaskId");
+
+ b.ToTable("ProjectTasks");
+ });
+
+ modelBuilder.Entity("WorkManagementTool.Data.Entities.SchoolSubject", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("INTEGER");
+
+ b.Property("CreatedAt")
+ .HasColumnType("TEXT");
+
+ b.Property("CreatedById")
+ .HasColumnType("TEXT");
+
+ b.Property("Deleted")
+ .HasColumnType("INTEGER");
+
+ b.Property("Description")
+ .HasMaxLength(500)
+ .HasColumnType("TEXT");
+
+ b.Property("Name")
+ .IsRequired()
+ .HasColumnType("TEXT");
+
+ b.HasKey("Id");
+
+ b.HasIndex("CreatedById");
+
+ b.ToTable("SchoolSubjects");
+ });
+
+ modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityRoleClaim", b =>
+ {
+ b.HasOne("Microsoft.AspNetCore.Identity.IdentityRole", null)
+ .WithMany()
+ .HasForeignKey("RoleId")
+ .OnDelete(DeleteBehavior.Cascade)
+ .IsRequired();
+ });
+
+ modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserClaim", b =>
+ {
+ b.HasOne("WorkManagementTool.Data.ApplicationUser", null)
+ .WithMany()
+ .HasForeignKey("UserId")
+ .OnDelete(DeleteBehavior.Cascade)
+ .IsRequired();
+ });
+
+ modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserLogin", b =>
+ {
+ b.HasOne("WorkManagementTool.Data.ApplicationUser", null)
+ .WithMany()
+ .HasForeignKey("UserId")
+ .OnDelete(DeleteBehavior.Cascade)
+ .IsRequired();
+ });
+
+ modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserPasskey", b =>
+ {
+ b.HasOne("WorkManagementTool.Data.ApplicationUser", null)
+ .WithMany()
+ .HasForeignKey("UserId")
+ .OnDelete(DeleteBehavior.Cascade)
+ .IsRequired();
+
+ b.OwnsOne("Microsoft.AspNetCore.Identity.IdentityPasskeyData", "Data", b1 =>
+ {
+ b1.Property("IdentityUserPasskeyCredentialId");
+
+ b1.Property("AttestationObject")
+ .IsRequired();
+
+ b1.Property("ClientDataJson")
+ .IsRequired();
+
+ b1.Property("CreatedAt");
+
+ b1.Property("IsBackedUp");
+
+ b1.Property("IsBackupEligible");
+
+ b1.Property("IsUserVerified");
+
+ b1.Property("Name");
+
+ b1.Property("PublicKey")
+ .IsRequired();
+
+ b1.Property("SignCount");
+
+ b1.PrimitiveCollection("Transports");
+
+ b1.HasKey("IdentityUserPasskeyCredentialId");
+
+ b1.ToTable("AspNetUserPasskeys");
+
+ b1.ToJson("Data");
+
+ b1.WithOwner()
+ .HasForeignKey("IdentityUserPasskeyCredentialId");
+ });
+
+ b.Navigation("Data")
+ .IsRequired();
+ });
+
+ modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserRole", b =>
+ {
+ b.HasOne("Microsoft.AspNetCore.Identity.IdentityRole", null)
+ .WithMany()
+ .HasForeignKey("RoleId")
+ .OnDelete(DeleteBehavior.Cascade)
+ .IsRequired();
+
+ b.HasOne("WorkManagementTool.Data.ApplicationUser", null)
+ .WithMany()
+ .HasForeignKey("UserId")
+ .OnDelete(DeleteBehavior.Cascade)
+ .IsRequired();
+ });
+
+ modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserToken", b =>
+ {
+ b.HasOne("WorkManagementTool.Data.ApplicationUser", null)
+ .WithMany()
+ .HasForeignKey("UserId")
+ .OnDelete(DeleteBehavior.Cascade)
+ .IsRequired();
+ });
+
+ modelBuilder.Entity("WorkManagementTool.Data.Entities.Homework", b =>
+ {
+ b.HasOne("WorkManagementTool.Data.ApplicationUser", "CreatedBy")
+ .WithMany()
+ .HasForeignKey("CreatedById");
+
+ b.HasOne("WorkManagementTool.Data.Entities.SchoolSubject", "SchoolSubject")
+ .WithMany("Homeworks")
+ .HasForeignKey("SchoolSubjectId")
+ .OnDelete(DeleteBehavior.Cascade)
+ .IsRequired();
+
+ b.Navigation("CreatedBy");
+
+ b.Navigation("SchoolSubject");
+ });
+
+ modelBuilder.Entity("WorkManagementTool.Data.Entities.ProjectTask", b =>
+ {
+ b.HasOne("WorkManagementTool.Data.Entities.Project", "Project")
+ .WithMany("Tasks")
+ .HasForeignKey("ProjectId")
+ .OnDelete(DeleteBehavior.Cascade)
+ .IsRequired();
+
+ b.HasOne("WorkManagementTool.Data.Entities.ProjectTask", null)
+ .WithMany("NextTasks")
+ .HasForeignKey("ProjectTaskId");
+
+ b.Navigation("Project");
+ });
+
+ modelBuilder.Entity("WorkManagementTool.Data.Entities.SchoolSubject", b =>
+ {
+ b.HasOne("WorkManagementTool.Data.ApplicationUser", "CreatedBy")
+ .WithMany()
+ .HasForeignKey("CreatedById");
+
+ b.Navigation("CreatedBy");
+ });
+
+ modelBuilder.Entity("WorkManagementTool.Data.Entities.Project", b =>
+ {
+ b.Navigation("Tasks");
+ });
+
+ modelBuilder.Entity("WorkManagementTool.Data.Entities.ProjectTask", b =>
+ {
+ b.Navigation("NextTasks");
+ });
+
+ modelBuilder.Entity("WorkManagementTool.Data.Entities.SchoolSubject", b =>
+ {
+ b.Navigation("Homeworks");
+ });
+#pragma warning restore 612, 618
+ }
+ }
+}
diff --git a/WorkManagementTool/Migrations/20251227192424_AddCreatedAtOnProjectAndProjectTask.cs b/WorkManagementTool/Migrations/20251227192424_AddCreatedAtOnProjectAndProjectTask.cs
new file mode 100644
index 0000000..3861cd5
--- /dev/null
+++ b/WorkManagementTool/Migrations/20251227192424_AddCreatedAtOnProjectAndProjectTask.cs
@@ -0,0 +1,41 @@
+using System;
+using Microsoft.EntityFrameworkCore.Migrations;
+
+#nullable disable
+
+namespace WorkManagementTool.Migrations
+{
+ ///
+ public partial class AddCreatedAtOnProjectAndProjectTask : Migration
+ {
+ ///
+ protected override void Up(MigrationBuilder migrationBuilder)
+ {
+ migrationBuilder.AddColumn(
+ name: "CreatedAt",
+ table: "ProjectTasks",
+ type: "TEXT",
+ nullable: false,
+ defaultValue: new DateTime(1, 1, 1, 0, 0, 0, 0, DateTimeKind.Unspecified));
+
+ migrationBuilder.AddColumn(
+ name: "CreatedAt",
+ table: "Projects",
+ type: "TEXT",
+ nullable: false,
+ defaultValue: new DateTime(1, 1, 1, 0, 0, 0, 0, DateTimeKind.Unspecified));
+ }
+
+ ///
+ protected override void Down(MigrationBuilder migrationBuilder)
+ {
+ migrationBuilder.DropColumn(
+ name: "CreatedAt",
+ table: "ProjectTasks");
+
+ migrationBuilder.DropColumn(
+ name: "CreatedAt",
+ table: "Projects");
+ }
+ }
+}
diff --git a/WorkManagementTool/Migrations/ApplicationDbContextModelSnapshot.cs b/WorkManagementTool/Migrations/ApplicationDbContextModelSnapshot.cs
index 4d4db29..5693664 100644
--- a/WorkManagementTool/Migrations/ApplicationDbContextModelSnapshot.cs
+++ b/WorkManagementTool/Migrations/ApplicationDbContextModelSnapshot.cs
@@ -282,6 +282,9 @@ namespace WorkManagementTool.Migrations
.ValueGeneratedOnAdd()
.HasColumnType("INTEGER");
+ b.Property("CreatedAt")
+ .HasColumnType("TEXT");
+
b.Property("Description")
.HasColumnType("TEXT");
@@ -300,6 +303,9 @@ namespace WorkManagementTool.Migrations
.ValueGeneratedOnAdd()
.HasColumnType("INTEGER");
+ b.Property("CreatedAt")
+ .HasColumnType("TEXT");
+
b.Property("Description")
.HasColumnType("TEXT");
diff --git a/WorkManagementTool/Program.cs b/WorkManagementTool/Program.cs
index ef8b6d4..32e4382 100644
--- a/WorkManagementTool/Program.cs
+++ b/WorkManagementTool/Program.cs
@@ -19,6 +19,8 @@ builder.Services.AddScoped();
builder.Services.AddScoped();
+builder.Services.AddScoped();
+builder.Services.AddScoped();
builder.Services.AddAuthentication(options =>
{
diff --git a/WorkManagementTool/work_management.db b/WorkManagementTool/work_management.db
index 5e349f1..7748719 100644
Binary files a/WorkManagementTool/work_management.db and b/WorkManagementTool/work_management.db differ
diff --git a/WorkManagementTool/work_management.db-shm b/WorkManagementTool/work_management.db-shm
new file mode 100644
index 0000000..eeecc9b
Binary files /dev/null and b/WorkManagementTool/work_management.db-shm differ
diff --git a/WorkManagementTool/work_management.db-wal b/WorkManagementTool/work_management.db-wal
new file mode 100644
index 0000000..452e05b
Binary files /dev/null and b/WorkManagementTool/work_management.db-wal differ