diff --git a/Blazor/Blazor/Models/AdministratorModel.cs b/Blazor/Blazor/Models/AdministratorModel.cs
new file mode 100644
index 0000000..ce34afe
--- /dev/null
+++ b/Blazor/Blazor/Models/AdministratorModel.cs
@@ -0,0 +1,19 @@
+using System.ComponentModel.DataAnnotations;
+
+namespace Blazor.Models
+{
+ public class AdministratorModel
+ {
+ public int Id { get; private set; }
+
+ [Required(ErrorMessage = "Username is required")]
+ [StringLength(50, ErrorMessage = "Username is too long.")]
+ public string Username { get; private set; }
+
+ [Required(ErrorMessage = "Password is required")]
+
+ public string hashedPassword { get; set; }
+
+
+ }
+}
diff --git a/Blazor/Blazor/Pages/AddAdministrators.razor b/Blazor/Blazor/Pages/AddAdministrators.razor
new file mode 100644
index 0000000..25c7346
--- /dev/null
+++ b/Blazor/Blazor/Pages/AddAdministrators.razor
@@ -0,0 +1,23 @@
+@page "/addAdministrators"
+@using Blazor.Models
+
+
AddAdministrators
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Blazor/Blazor/Pages/AddAdministrators.razor.cs b/Blazor/Blazor/Pages/AddAdministrators.razor.cs
new file mode 100644
index 0000000..052bccf
--- /dev/null
+++ b/Blazor/Blazor/Pages/AddAdministrators.razor.cs
@@ -0,0 +1,27 @@
+using Blazored.LocalStorage;
+using Microsoft.AspNetCore.Components.Forms;
+using Microsoft.AspNetCore.Components;
+using Blazor.Models;
+using Blazor.Services;
+
+namespace Blazor.Pages
+{
+ public partial class AddAdministrators
+ {
+ private AdministratorModel administratorModel = new();
+
+ [Inject]
+ public IDataService DataService { get; set; }
+
+ [Inject]
+ public NavigationManager NavigationManager { get; set; }
+
+
+ private async void HandleValidSubmit()
+ {
+ await DataService.Add(administratorModel);
+
+ NavigationManager.NavigateTo("administrators");
+ }
+ }
+}
diff --git a/Blazor/Blazor/Services/DataLocalService.cs b/Blazor/Blazor/Services/DataLocalService.cs
index 37c6ea2..5fb1137 100644
--- a/Blazor/Blazor/Services/DataLocalService.cs
+++ b/Blazor/Blazor/Services/DataLocalService.cs
@@ -114,5 +114,64 @@ namespace Blazor.Services
return (await _localStorage.GetItemAsync("data")).Skip((currentPage - 1) * pageSize).Take(pageSize).ToList();
}
+
+ public async Task GetAdminById(int id)
+ {
+ // Get the current data
+ var currentData = await _localStorage.GetItemAsync>("data");
+
+ // Get the chapter int the list
+ var admin = currentData.FirstOrDefault(w => w.Id == id);
+
+ // Check if chapter exist
+ if (admin == null)
+ {
+ throw new Exception($"Unable to found the item with ID: {id}");
+ }
+
+ return admin;
+ }
+
+ public async Task Update(int id, AdministratorModel model)
+ {
+ // Get the current data
+ var currentData = await _localStorage.GetItemAsync>("data");
+
+ // Get the chapter int the list
+ var admin = currentData.FirstOrDefault(w => w.Id == id);
+
+ // Check if chapter exist
+ if (admin == null)
+ {
+ throw new Exception($"Unable to found the item with ID: {id}");
+ }
+
+ // Modify the content of the chapter
+ admin.Username = model.Username;
+
+ // Save the data
+ await _localStorage.SetItemAsync("data", currentData);
+ }
+
+
+ public async Task Add(AdministratorModel model)
+ {
+ // Get the current data
+ var currentData = await _localStorage.GetItemAsync>("data");
+
+ // Simulate the Id
+ model.Id = currentData.Max(s => s.Id) + 1;
+
+ // Add the chapter to the current data
+ currentData.Add(new Chapter
+ {
+ Id = model.Id,
+ Name = model.Name
+ });
+
+
+ // Save the data
+ await _localStorage.SetItemAsync("data", currentData);
+ }
}
}
diff --git a/Blazor/Blazor/Services/IDataService.cs b/Blazor/Blazor/Services/IDataService.cs
index 5a6bd6c..bdc1468 100644
--- a/Blazor/Blazor/Services/IDataService.cs
+++ b/Blazor/Blazor/Services/IDataService.cs
@@ -13,5 +13,14 @@ namespace Blazor.Services
Task GetById(int id);
Task Update(int id, ChapterModel model);
+
+ Task Add(AdministratorModel model);
+
+ Task Update(int id, AdministratorModel model);
+
+ Task GetAdminById(int id);
+
+ Task CountAdmin();
+ Task> ListAdmin(int currentPage, int pageSize);
}
}
diff --git a/Blazor/Blazor/Shared/NavMenu.razor b/Blazor/Blazor/Shared/NavMenu.razor
index 6c502bb..7e7e6f5 100644
--- a/Blazor/Blazor/Shared/NavMenu.razor
+++ b/Blazor/Blazor/Shared/NavMenu.razor
@@ -24,6 +24,11 @@
Chapters
+
+
+ Questions
+
+
Fetch data