diff --git a/Blazor/Blazor/Models/AdministratorModel.cs b/Blazor/Blazor/Models/AdministratorModel.cs deleted file mode 100644 index ce34afe..0000000 --- a/Blazor/Blazor/Models/AdministratorModel.cs +++ /dev/null @@ -1,19 +0,0 @@ -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/Models/AdministratorsModel.cs b/Blazor/Blazor/Models/AdministratorsModel.cs index 023cce4..5a03654 100644 --- a/Blazor/Blazor/Models/AdministratorsModel.cs +++ b/Blazor/Blazor/Models/AdministratorsModel.cs @@ -6,23 +6,8 @@ namespace Blazor.Models; public class AdministratorsModel : PasswordHasher { - public int Id { get; private set; } - public string Username { get; private set; } - public string HashedPassword { get; set; } + public int Id { get; set; } + public string Username { get; set; } + public string hashedPassword { get; set; } - private byte[] salt = RandomNumberGenerator.GetBytes(128 / 8); // for password hash - - AdministratorsModel(int id, string username, string password) - { - this.Id = id; - this.Username = username; - //hash password - this.HashedPassword = Convert.ToBase64String(KeyDerivation.Pbkdf2( - password: password!, - salt: salt, - prf: KeyDerivationPrf.HMACSHA256, - iterationCount: 100000, - numBytesRequested: 256 / 8) - ); - } } diff --git a/Blazor/Blazor/Pages/AddAdministrators.razor b/Blazor/Blazor/Pages/AddAdministrators.razor index 25c7346..944bb4d 100644 --- a/Blazor/Blazor/Pages/AddAdministrators.razor +++ b/Blazor/Blazor/Pages/AddAdministrators.razor @@ -3,18 +3,18 @@

AddAdministrators

- +

diff --git a/Blazor/Blazor/Pages/AddAdministrators.razor.cs b/Blazor/Blazor/Pages/AddAdministrators.razor.cs index 052bccf..222c73d 100644 --- a/Blazor/Blazor/Pages/AddAdministrators.razor.cs +++ b/Blazor/Blazor/Pages/AddAdministrators.razor.cs @@ -8,7 +8,7 @@ namespace Blazor.Pages { public partial class AddAdministrators { - private AdministratorModel administratorModel = new(); + private AdministratorsModel administratorsModel = new(); [Inject] public IDataService DataService { get; set; } @@ -19,7 +19,7 @@ namespace Blazor.Pages private async void HandleValidSubmit() { - await DataService.Add(administratorModel); + await DataService.Add(administratorsModel); NavigationManager.NavigateTo("administrators"); } diff --git a/Blazor/Blazor/Pages/Administrators.razor b/Blazor/Blazor/Pages/Administrators.razor index fdb0252..c4b1c77 100644 --- a/Blazor/Blazor/Pages/Administrators.razor +++ b/Blazor/Blazor/Pages/Administrators.razor @@ -1,6 +1,7 @@ @page "/administrators" @using Blazorise.DataGrid @using Blazor.ViewClasses +

Administrators

>("data"); - // Get the chapter int the list + // Get the admin int the list var admin = currentData.FirstOrDefault(w => w.Id == id); - // Check if chapter exist + // Check if admin exist if (admin == null) { throw new Exception($"Unable to found the item with ID: {id}"); } - // Modify the content of the chapter + // Modify the content of the adminnistrator admin.Username = model.Username; + admin.hashedPassword = model.hashedPassword; // Save the data await _localStorage.SetItemAsync("data", currentData); } - public async Task Add(AdministratorModel model) + public async Task Add(AdministratorsModel model) { // Get the current data - var currentData = await _localStorage.GetItemAsync>("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 + currentData.Add(new Administrator { Id = model.Id, - Name = model.Name + Username = model.Username, + hashedPassword = model.hashedPassword }); // Save the data await _localStorage.SetItemAsync("data", currentData); } + + public async Task CountAdmin() + { + // Load data from the local storage + var currentData = await _localStorage.GetItemAsync("data"); + + // Check if data exist in the local storage + if (currentData == null) + { + // this code add in the local storage the fake data + var originalData = await _http.GetFromJsonAsync($"{_navigationManager.BaseUri}fake-administrator.json"); + await _localStorage.SetItemAsync("data", originalData); + } + + return (await _localStorage.GetItemAsync("data")).Length; + } + + public async Task> ListAdmin(int currentPage, int pageSize) + { + // Load data from the local storage + var currentData = await _localStorage.GetItemAsync("data"); + + // Check if data exist in the local storage + if (currentData == null) + { + // this code add in the local storage the fake data + var originalData = await _http.GetFromJsonAsync($"{_navigationManager.BaseUri}fake-administrator.json"); + await _localStorage.SetItemAsync("data", originalData); + } + + return (await _localStorage.GetItemAsync("data")).Skip((currentPage - 1) * pageSize).Take(pageSize).ToList(); + } } } diff --git a/Blazor/Blazor/Services/IDataService.cs b/Blazor/Blazor/Services/IDataService.cs index 844d98d..7c69a44 100644 --- a/Blazor/Blazor/Services/IDataService.cs +++ b/Blazor/Blazor/Services/IDataService.cs @@ -15,9 +15,9 @@ namespace Blazor.Services Task Update(int id, ChapterModel model); - Task Add(AdministratorModel model); + Task Add(AdministratorsModel model); - Task Update(int id, AdministratorModel model); + Task Update(int id, AdministratorsModel model); Task GetAdminById(int id); diff --git a/Blazor/Blazor/ViewClasses/Administrator.cs b/Blazor/Blazor/ViewClasses/Administrator.cs index e0ec189..8abff03 100644 --- a/Blazor/Blazor/ViewClasses/Administrator.cs +++ b/Blazor/Blazor/ViewClasses/Administrator.cs @@ -2,14 +2,8 @@ public class Administrator { - public int Id { get; private set; } - public string Username { get; private set; } + public int Id { get; set; } + public string Username { get; set; } public string hashedPassword { get; set; } - public Administrator(int id, string username, string hashedPassword) - { - Id = id; - Username = username; - this.hashedPassword = hashedPassword; - } }