From e2052f136bcde87f013ac6675146aa0676d8b854 Mon Sep 17 00:00:00 2001 From: "maxence.guitard" Date: Fri, 15 Dec 2023 16:59:49 +0100 Subject: [PATCH 1/2] feat : page addAdmin --- Blazor/Blazor/Models/AdministratorModel.cs | 19 ++++++ Blazor/Blazor/Pages/AddAdministrators.razor | 23 ++++++++ .../Blazor/Pages/AddAdministrators.razor.cs | 27 +++++++++ Blazor/Blazor/Services/DataLocalService.cs | 59 +++++++++++++++++++ Blazor/Blazor/Services/IDataService.cs | 9 +++ Blazor/Blazor/Shared/NavMenu.razor | 5 ++ 6 files changed, 142 insertions(+) create mode 100644 Blazor/Blazor/Models/AdministratorModel.cs create mode 100644 Blazor/Blazor/Pages/AddAdministrators.razor create mode 100644 Blazor/Blazor/Pages/AddAdministrators.razor.cs 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 +