From 87f53607289ac2a860415901007e36f9163887bc Mon Sep 17 00:00:00 2001 From: "patrick.brugiere" Date: Mon, 8 Jan 2024 16:27:19 +0100 Subject: [PATCH] travail sur la page de modification --- .../adminBlazor/Factories/UserFactory.cs | 10 ++-- .../adminBlazor/adminBlazor/Models/User.cs | 24 +------- .../adminBlazor/Models/UserModel.cs | 39 ++++++++++++ .../adminBlazor/Pages/Add.razor.cs | 6 +- .../adminBlazor/Pages/EditUser.razor | 3 +- .../adminBlazor/Pages/EditUser.razor.cs | 12 ++-- .../adminBlazor/adminBlazor/Pages/List.razor | 23 ++++--- .../adminBlazor/Pages/List.razor.cs | 14 ++--- Project/adminBlazor/adminBlazor/Program.cs | 4 +- .../adminBlazor/Services/DataLocalService.cs | 60 ++++++++++++------- .../adminBlazor/Services/IDataService.cs | 8 +-- .../adminBlazor/adminBlazor/_Imports.razor | 3 +- 12 files changed, 121 insertions(+), 85 deletions(-) create mode 100644 Project/adminBlazor/adminBlazor/Models/UserModel.cs diff --git a/Project/adminBlazor/adminBlazor/Factories/UserFactory.cs b/Project/adminBlazor/adminBlazor/Factories/UserFactory.cs index 8b8cf04..718b661 100644 --- a/Project/adminBlazor/adminBlazor/Factories/UserFactory.cs +++ b/Project/adminBlazor/adminBlazor/Factories/UserFactory.cs @@ -8,9 +8,9 @@ namespace adminBlazor.Factories { public static class UserFactory { - public static User ToModel(User user, byte[] imageContent) + public static UserModel ToModel(UserModel user, byte[] imageContent) { - return new User + return new UserModel { Id = user.Id, Name = user.Name, @@ -25,9 +25,9 @@ namespace adminBlazor.Factories }; } - public static User Create(User user) + public static UserModel Create(UserModel user) { - return new User + return new UserModel { Id = user.Id, Name = user.Name, @@ -42,7 +42,7 @@ namespace adminBlazor.Factories }; } - public static void Update(User item, User user) + public static void Update(UserModel item, UserModel user) { item.Id = user.Id; item.Name = user.Name; diff --git a/Project/adminBlazor/adminBlazor/Models/User.cs b/Project/adminBlazor/adminBlazor/Models/User.cs index e7e8e63..dc075b3 100644 --- a/Project/adminBlazor/adminBlazor/Models/User.cs +++ b/Project/adminBlazor/adminBlazor/Models/User.cs @@ -4,36 +4,18 @@ namespace adminBlazor.Models { public class User { - [Required] public int Id { get; set; } - - [StringLength(50, ErrorMessage = "Name length can't be more than 50.")] - [DataType(DataType.Password)] - [Required] public string Password { get; set; } - - [EmailAddress] public string Email { get; set; } - - [StringLength(50, ErrorMessage = "Name length can't be more than 50.")] - [Required] public string Name { get; set; } - - [StringLength(50, ErrorMessage = "Name length can't be more than 50.")] public string Surname { get; set; } - - [StringLength(50, ErrorMessage = "Name length can't be more than 50.")] public string Nickname { get; set; } - - [StringLength(50, ErrorMessage = "Name length can't be more than 50.")] - public string Image { get; set; } - + public string Image { get; set; } public bool ExtraTime { get; set; } - [Range(0,100)] - public int Group { get; set; } + [Range(0, 100)] + public int Group { get; set; } public List Roles { get; set; } - } } diff --git a/Project/adminBlazor/adminBlazor/Models/UserModel.cs b/Project/adminBlazor/adminBlazor/Models/UserModel.cs new file mode 100644 index 0000000..f050650 --- /dev/null +++ b/Project/adminBlazor/adminBlazor/Models/UserModel.cs @@ -0,0 +1,39 @@ +using System.ComponentModel.DataAnnotations; + +namespace adminBlazor.Models +{ + public class UserModel + { + [Required] + public int Id { get; set; } + + [StringLength(50, ErrorMessage = "Name length can't be more than 50.")] + [DataType(DataType.Password)] + [Required] + public string Password { get; set; } + + [EmailAddress] + public string Email { get; set; } + + [StringLength(50, ErrorMessage = "Name length can't be more than 50.")] + [Required] + public string Name { get; set; } + + [StringLength(50, ErrorMessage = "Name length can't be more than 50.")] + public string Surname { get; set; } + + [StringLength(50, ErrorMessage = "Name length can't be more than 50.")] + public string Nickname { get; set; } + + [StringLength(50, ErrorMessage = "Name length can't be more than 50.")] + public string Image { get; set; } + + public bool ExtraTime { get; set; } + + [Range(0,100)] + public int Group { get; set; } + + public List Roles { get; set; } + + } +} diff --git a/Project/adminBlazor/adminBlazor/Pages/Add.razor.cs b/Project/adminBlazor/adminBlazor/Pages/Add.razor.cs index 6bc1320..234354a 100644 --- a/Project/adminBlazor/adminBlazor/Pages/Add.razor.cs +++ b/Project/adminBlazor/adminBlazor/Pages/Add.razor.cs @@ -26,7 +26,7 @@ namespace adminBlazor.Pages /// /// The current item model /// - private Models.User user = new Models.User() + private Models.UserModel user = new Models.UserModel() { Roles = new List() }; @@ -34,13 +34,13 @@ namespace adminBlazor.Pages private async void HandleValidSubmit() { // Get the current data - var currentData = await LocalStorage.GetItemAsync>("data"); + var currentData = await LocalStorage.GetItemAsync>("data"); // Simulate the Id user.Id = currentData.Max(s => s.Id) + 1; // Add the item to the current data - currentData.Add(new User + currentData.Add(new UserModel { Id = user.Id, Name = user.Name, diff --git a/Project/adminBlazor/adminBlazor/Pages/EditUser.razor b/Project/adminBlazor/adminBlazor/Pages/EditUser.razor index fc29423..7ca3e9d 100644 --- a/Project/adminBlazor/adminBlazor/Pages/EditUser.razor +++ b/Project/adminBlazor/adminBlazor/Pages/EditUser.razor @@ -1,8 +1,9 @@ @page "/editUser/{Id:int}" @using adminBlazor.Models -

Edit

+

Edit

+

User id : @Id

diff --git a/Project/adminBlazor/adminBlazor/Pages/EditUser.razor.cs b/Project/adminBlazor/adminBlazor/Pages/EditUser.razor.cs index 8e843b0..caa9640 100644 --- a/Project/adminBlazor/adminBlazor/Pages/EditUser.razor.cs +++ b/Project/adminBlazor/adminBlazor/Pages/EditUser.razor.cs @@ -13,9 +13,8 @@ namespace adminBlazor.Pages public int Id { get; set; } //IDataService - + [Inject] public IDataService DataService { get; set; } - //public ILocalStorageService LocalStorage { get; set; } [Inject] public NavigationManager NavigationManager { get; set; } @@ -33,7 +32,7 @@ namespace adminBlazor.Pages /// /// The current item model /// - private Models.User user = new Models.User() + private Models.UserModel user = new Models.UserModel() { Roles = new List() }; @@ -49,16 +48,15 @@ namespace adminBlazor.Pages protected override async Task OnInitializedAsync() { var item = await DataService.GetById(Id); - - var fileContent = await File.ReadAllBytesAsync($"{WebHostEnvironment.WebRootPath}/images/default.png"); + // var fileContent = await File.ReadAllBytesAsync($"{WebHostEnvironment.WebRootPath}/images/default.png"); if (File.Exists($"{WebHostEnvironment.WebRootPath}/images/{user.Name}.png")) { - fileContent = await File.ReadAllBytesAsync($"{WebHostEnvironment.WebRootPath}/images/{item.Name}.png"); + // fileContent = await File.ReadAllBytesAsync($"{WebHostEnvironment.WebRootPath}/images/{item.Name}.png"); } // Set the model with the item - user = new User + user = new UserModel { Id = user.Id, Name = user.Name, diff --git a/Project/adminBlazor/adminBlazor/Pages/List.razor b/Project/adminBlazor/adminBlazor/Pages/List.razor index bda43f1..abc232b 100644 --- a/Project/adminBlazor/adminBlazor/Pages/List.razor +++ b/Project/adminBlazor/adminBlazor/Pages/List.razor @@ -15,25 +15,25 @@ - - + - - - - + + + + - - - + + + - @if (context is User user) + @if (context is UserModel user) { @if (user.Roles != null && user.Roles.Any()) { @@ -45,9 +45,8 @@ } } - - + Editer diff --git a/Project/adminBlazor/adminBlazor/Pages/List.razor.cs b/Project/adminBlazor/adminBlazor/Pages/List.razor.cs index 47caae6..f33cd41 100644 --- a/Project/adminBlazor/adminBlazor/Pages/List.razor.cs +++ b/Project/adminBlazor/adminBlazor/Pages/List.razor.cs @@ -11,7 +11,7 @@ namespace adminBlazor.Pages { public partial class List { - private List _users; + private List _users; private int totalUser; @@ -33,18 +33,18 @@ namespace adminBlazor.Pages return; } - var currentData = await LocalStorage.GetItemAsync("data"); + 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 (we load the data sync for initialize the data before load the OnReadData method) - var originalData = Http.GetFromJsonAsync($"{NavigationManager.BaseUri}user.json").Result; + var originalData = Http.GetFromJsonAsync($"{NavigationManager.BaseUri}user.json").Result; await LocalStorage.SetItemAsync("data", originalData); } } - private async Task OnReadData(DataGridReadDataEventArgs e) + private async Task OnReadData(DataGridReadDataEventArgs e) { if (e.CancellationToken.IsCancellationRequested) { @@ -53,12 +53,12 @@ namespace adminBlazor.Pages // When you use a real API, we use this follow code //var response = await Http.GetJsonAsync( $"http://my-api/api/data?page={e.Page}&pageSize={e.PageSize}" ); - var response = (await LocalStorage.GetItemAsync("data")).Skip((e.Page - 1) * e.PageSize).Take(e.PageSize).ToList(); + var response = (await LocalStorage.GetItemAsync("data")).Skip((e.Page - 1) * e.PageSize).Take(e.PageSize).ToList(); if (!e.CancellationToken.IsCancellationRequested) { - totalUser = (await LocalStorage.GetItemAsync>("data")).Count; - _users = new List(response); // an actual data for the current page + totalUser = (await LocalStorage.GetItemAsync>("data")).Count; + _users = new List(response); // an actual data for the current page } } } diff --git a/Project/adminBlazor/adminBlazor/Program.cs b/Project/adminBlazor/adminBlazor/Program.cs index 246f01b..67e6798 100644 --- a/Project/adminBlazor/adminBlazor/Program.cs +++ b/Project/adminBlazor/adminBlazor/Program.cs @@ -5,9 +5,10 @@ using Blazorise; using Blazorise.Bootstrap; using Blazorise.Icons.FontAwesome; using Blazored.LocalStorage; +using adminBlazor.Services; var builder = WebApplication.CreateBuilder(args); - +builder.Services.AddScoped(); // Add services to the container. builder.Services.AddRazorPages(); builder.Services.AddServerSideBlazor(); @@ -17,6 +18,7 @@ builder.Services.AddHttpClient(); builder.Services.AddBlazoredLocalStorage(); + builder.Services .AddBlazorise() .AddBootstrapProviders() diff --git a/Project/adminBlazor/adminBlazor/Services/DataLocalService.cs b/Project/adminBlazor/adminBlazor/Services/DataLocalService.cs index ee85b12..f88a5fc 100644 --- a/Project/adminBlazor/adminBlazor/Services/DataLocalService.cs +++ b/Project/adminBlazor/adminBlazor/Services/DataLocalService.cs @@ -9,15 +9,28 @@ namespace adminBlazor.Services { public class DataLocalService : IDataService { + private readonly HttpClient _http; + private readonly ILocalStorageService _localStorage; + private readonly NavigationManager _navigationManager; + private readonly IWebHostEnvironment _webHostEnvironment; + + public DataLocalService( + ILocalStorageService localStorage, + HttpClient http, + IWebHostEnvironment webHostEnvironment, + NavigationManager navigationManager) + { + _localStorage = localStorage; + _http = http; + _webHostEnvironment = webHostEnvironment; + _navigationManager = navigationManager; + } + public DataLocalService(ILocalStorageService localStorage) + { + _localStorage = localStorage; // Assure-toi que LocalStorage est initialisé correctement ici + } - public required ILocalStorageService LocalStorage { get; set; } - - [Inject] - public required IWebHostEnvironment WebHostEnvironment { get; set; } - - public DataLocalService dataLocalService => throw new NotImplementedException(); - - public Task Add(User model) + public Task Add(UserModel model) { throw new NotImplementedException(); } @@ -27,10 +40,11 @@ namespace adminBlazor.Services throw new NotImplementedException(); } - public async Task GetById(int id) + public async Task GetById(int id) { - // Get the current data - var currentData = await LocalStorage.GetItemAsync>("data"); + + //var currentData = await LocalStorage.GetItemAsync("user.json"); + var currentData = await _localStorage.GetItemAsync>("data"); var user = currentData.FirstOrDefault(w => w.Id == id); @@ -42,15 +56,15 @@ namespace adminBlazor.Services return user; } - public Task> List(int currentPage, int pageSize) + public Task> List(int currentPage, int pageSize) { throw new NotImplementedException(); } - public async Task Update(int id, User model) + public async Task Update(int id, UserModel model) { // Get the current data - var currentData = await LocalStorage.GetItemAsync>("data"); + var currentData = await _localStorage.GetItemAsync>("data"); var user = currentData.FirstOrDefault(w => w.Id == id); @@ -60,30 +74,30 @@ namespace adminBlazor.Services } // Save the image - var imagePathInfo = new DirectoryInfo($"{WebHostEnvironment.WebRootPath}/images"); + // var imagePathInfo = new DirectoryInfo($"{WebHostEnvironment.WebRootPath}/images"); // Check if the folder "images" exist - if (!imagePathInfo.Exists) + // if (!imagePathInfo.Exists) { - imagePathInfo.Create(); + // imagePathInfo.Create(); } // Delete the previous image if (user.Name != model.Name) { - var oldFileName = new FileInfo($"{imagePathInfo}/{user.Name}.png"); + // var oldFileName = new FileInfo($"{imagePathInfo}/{user.Name}.png"); - if (oldFileName.Exists) + // if (oldFileName.Exists) { - File.Delete(oldFileName.FullName); + // File.Delete(oldFileName.FullName); } } // Determine the image name - var fileName = new FileInfo($"{imagePathInfo}/{model.Name}.png"); + //var fileName = new FileInfo($"{imagePathInfo}/{model.Name}.png"); // Write the file content - //await File.WriteAllBytesAsync(fileName.FullName, model.Image); + // await File.WriteAllBytesAsync(fileName.FullName, model.Image); UserFactory.Update(user, model); // Modify the content of the item @@ -98,7 +112,7 @@ namespace adminBlazor.Services user.Image = model.Image; // Save the data - await LocalStorage.SetItemAsync("data", currentData); + await _localStorage.SetItemAsync("data", currentData); } } } diff --git a/Project/adminBlazor/adminBlazor/Services/IDataService.cs b/Project/adminBlazor/adminBlazor/Services/IDataService.cs index 3edabec..2100be1 100644 --- a/Project/adminBlazor/adminBlazor/Services/IDataService.cs +++ b/Project/adminBlazor/adminBlazor/Services/IDataService.cs @@ -7,15 +7,15 @@ namespace adminBlazor.Services public interface IDataService { - Task Add(User model); + Task Add(UserModel model); Task Count(); - Task> List(int currentPage, int pageSize); + Task> List(int currentPage, int pageSize); - Task GetById(int id); + Task GetById(int id); - Task Update(int id, User model); + Task Update(int id, UserModel model); } } diff --git a/Project/adminBlazor/adminBlazor/_Imports.razor b/Project/adminBlazor/adminBlazor/_Imports.razor index e2c4e28..08bb737 100644 --- a/Project/adminBlazor/adminBlazor/_Imports.razor +++ b/Project/adminBlazor/adminBlazor/_Imports.razor @@ -8,4 +8,5 @@ @using Microsoft.JSInterop @using adminBlazor @using adminBlazor.Shared -@using Blazorise.DataGrid; +@using Blazorise.DataGrid +@using adminBlazor.Services