From fc94001fb021ebc82294ee7be5d31269e76eae55 Mon Sep 17 00:00:00 2001 From: "patrick.brugiere" Date: Tue, 9 Jan 2024 14:49:55 +0100 Subject: [PATCH 1/2] travail sur la page de modification, c'est bon il y a juste un leger bug --- .../adminBlazor/Factories/UserFactory.cs | 34 ++++++++-- .../adminBlazor/Pages/EditUser.razor | 11 +--- .../adminBlazor/Pages/EditUser.razor.cs | 64 +++++++------------ .../adminBlazor/Services/DataLocalService.cs | 2 +- 4 files changed, 55 insertions(+), 56 deletions(-) diff --git a/Project/adminBlazor/adminBlazor/Factories/UserFactory.cs b/Project/adminBlazor/adminBlazor/Factories/UserFactory.cs index d75cce4..04aed5d 100644 --- a/Project/adminBlazor/adminBlazor/Factories/UserFactory.cs +++ b/Project/adminBlazor/adminBlazor/Factories/UserFactory.cs @@ -55,13 +55,12 @@ namespace adminBlazor.Factories if (!string.IsNullOrEmpty(user.Nickname)) item.Nickname = user.Nickname; - if (user.ExtraTime!=null) item.ExtraTime = user.ExtraTime; if (!string.IsNullOrEmpty(user.Image)) item.Image = user.Image; - if (user.Group!=null) + if (user.Group != 0) item.Group = user.Group; if (!string.IsNullOrEmpty(user.Password)) @@ -71,8 +70,33 @@ namespace adminBlazor.Factories item.Email = user.Email; if (user.Roles != null) - item.Roles = user.Roles; - } + { + + if (user.Roles.Contains("student")) + { + item.Roles = new List(); + item.Roles.Add("Student"); + } + else + { + if (user.Roles.Contains("teacher") || user.Roles.Contains("admin")) + { + item.Roles = new List(); + if (user.Roles.Contains("teacher")) + { + item.Roles.Add("Teacher"); + } + if (user.Roles.Contains("admin")) + { + item.Roles.Add("Admin"); + } + } + } + + } + + } + } } -} + diff --git a/Project/adminBlazor/adminBlazor/Pages/EditUser.razor b/Project/adminBlazor/adminBlazor/Pages/EditUser.razor index 7ca3e9d..ab8b6e8 100644 --- a/Project/adminBlazor/adminBlazor/Pages/EditUser.razor +++ b/Project/adminBlazor/adminBlazor/Pages/EditUser.razor @@ -11,7 +11,7 @@

@@ -47,16 +47,9 @@ @foreach (var role in roles) { var currentItem = role; // Capturer la variable locale pour éviter les problèmes de fermeture - @if (currentItem == "student") - { + - break; - } -
diff --git a/Project/adminBlazor/adminBlazor/Pages/EditUser.razor.cs b/Project/adminBlazor/adminBlazor/Pages/EditUser.razor.cs index 1435cd3..6bc8d36 100644 --- a/Project/adminBlazor/adminBlazor/Pages/EditUser.razor.cs +++ b/Project/adminBlazor/adminBlazor/Pages/EditUser.razor.cs @@ -23,6 +23,8 @@ namespace adminBlazor.Pages [Inject] public IWebHostEnvironment WebHostEnvironment { get; set; } + public User currUser; + ///

/// The default enchant categories. @@ -41,9 +43,9 @@ namespace adminBlazor.Pages private async void HandleValidSubmit() { UserModel item = UserFactory.ToModel(user); - - await DataService.Update(Id,item); - + + await DataService.Update(Id, item); + NavigationManager.NavigateTo("list"); } @@ -52,11 +54,12 @@ namespace adminBlazor.Pages protected override async Task OnInitializedAsync() { var item = await DataService.GetById(Id); - // var fileContent = await File.ReadAllBytesAsync($"{WebHostEnvironment.WebRootPath}/images/default.png"); + // currentUser = item; + // var fileContent = await File.ReadAllBytesAsync($"{WebHostEnvironment.WebRootPath}/images/default.png"); - if (File.Exists($"{WebHostEnvironment.WebRootPath}/images/{user.Name}.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 @@ -106,7 +109,7 @@ namespace adminBlazor.Pages { // Désactiver les autres cases à cocher si "Étudiant" est décochée disableOtherCheckboxes = false; - user.Roles.Remove(currentItem); + //user.Roles.Remove(currentItem); } } } @@ -126,51 +129,30 @@ namespace adminBlazor.Pages { // Sinon, activer les autres cases disableOtherCheckboxes = false; - user.Roles.Remove(currentItem); + //user.Roles.Remove(currentItem); } } private void RolesCategoriesChange(string item, object checkedValue) { - if (item == "student") - { - isStudentChecked = (bool)checkedValue; - if (isStudentChecked) - { - // Activer les autres cases à cocher si "Étudiant" est cochée - disableOtherCheckboxes = true; - if (!user.Roles.Contains(item)) - { - user.Roles.Add(item); - } - } - else + isStudentChecked = (bool)checkedValue; + + if (isStudentChecked) + { + // Activer les autres cases à cocher si "Étudiant" est cochée + disableOtherCheckboxes = true; + if (!user.Roles.Contains(item)) { - // Désactiver les autres cases à cocher si "Étudiant" est décochée - disableOtherCheckboxes = false; - user.Roles.Remove(item); + user.Roles.Add(item); } } else { - if (disableOtherCheckboxes) - { - //la case student a été coché ducoup on n'ajoute pas les autres rôles cochés - return; - if ((bool)checkedValue) - { - if (!user.Roles.Contains(item)) - { - user.Roles.Add(item); - } - } - else - { - user.Roles.Remove(item); - } - } + // Désactiver les autres cases à cocher si "Étudiant" est décochée + disableOtherCheckboxes = false; + //user.Roles.Remove(item); } } - } + } } diff --git a/Project/adminBlazor/adminBlazor/Services/DataLocalService.cs b/Project/adminBlazor/adminBlazor/Services/DataLocalService.cs index 766e303..207e97c 100644 --- a/Project/adminBlazor/adminBlazor/Services/DataLocalService.cs +++ b/Project/adminBlazor/adminBlazor/Services/DataLocalService.cs @@ -64,7 +64,7 @@ namespace adminBlazor.Services 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); From 644730c67dd753bbadabf3cc5b91ac600ee92f5f Mon Sep 17 00:00:00 2001 From: "patrick.brugiere" Date: Tue, 9 Jan 2024 15:23:41 +0100 Subject: [PATCH 2/2] modification de la page add pour utiliser DataLocalService --- .../adminBlazor/Factories/UserFactory.cs | 4 +- .../adminBlazor/Pages/Add.razor.cs | 43 +++---------------- .../adminBlazor/Services/DataLocalService.cs | 30 ++++++++++++- .../adminBlazor/Services/IDataService.cs | 2 +- 4 files changed, 36 insertions(+), 43 deletions(-) diff --git a/Project/adminBlazor/adminBlazor/Factories/UserFactory.cs b/Project/adminBlazor/adminBlazor/Factories/UserFactory.cs index 04aed5d..3d53a3f 100644 --- a/Project/adminBlazor/adminBlazor/Factories/UserFactory.cs +++ b/Project/adminBlazor/adminBlazor/Factories/UserFactory.cs @@ -26,9 +26,9 @@ namespace adminBlazor.Factories }; } - public static UserModel Create(UserModel user) + public static User Create(UserModel user) { - return new UserModel + return new User { Id = user.Id, Name = user.Name, diff --git a/Project/adminBlazor/adminBlazor/Pages/Add.razor.cs b/Project/adminBlazor/adminBlazor/Pages/Add.razor.cs index 234354a..61b0159 100644 --- a/Project/adminBlazor/adminBlazor/Pages/Add.razor.cs +++ b/Project/adminBlazor/adminBlazor/Pages/Add.razor.cs @@ -3,6 +3,7 @@ using Microsoft.AspNetCore.Components.Forms; using Microsoft.AspNetCore.Components; using adminBlazor.Models; using Microsoft.AspNetCore.Mvc.RazorPages; +using adminBlazor.Services; namespace adminBlazor.Pages { @@ -12,6 +13,8 @@ namespace adminBlazor.Pages public NavigationManager NavigationManager { get; set; } [Inject] public ILocalStorageService LocalStorage { get; set; } + [Inject] + public IDataService DataService { get; set; } [Inject] public IWebHostEnvironment WebHostEnvironment { get; set; } @@ -33,44 +36,8 @@ namespace adminBlazor.Pages private async void HandleValidSubmit() { - // Get the current 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 UserModel - { - Id = user.Id, - Name = user.Name, - Surname = user.Surname, - Nickname = user.Nickname, - ExtraTime = user.ExtraTime, - Image = user.Image, - Group = user.Group, - Password = user.Password, - Email = user.Email, - Roles = user.Roles - }); - - // Save the image - var imagePathInfo = new DirectoryInfo($"{WebHostEnvironment.WebRootPath}/images"); - - // Check if the folder "images" exist - if (!imagePathInfo.Exists) - { - imagePathInfo.Create(); - } - - // Determine the image name - var fileName = new FileInfo($"{imagePathInfo}/{user.Image}.png"); - - // Write the file content - //await File.WriteAllBytesAsync(fileName.FullName, users.Image); - - // Save the data - await LocalStorage.SetItemAsync("data", currentData); + await DataService.Add(user); + NavigationManager.NavigateTo("list"); } diff --git a/Project/adminBlazor/adminBlazor/Services/DataLocalService.cs b/Project/adminBlazor/adminBlazor/Services/DataLocalService.cs index bacb381..c764098 100644 --- a/Project/adminBlazor/adminBlazor/Services/DataLocalService.cs +++ b/Project/adminBlazor/adminBlazor/Services/DataLocalService.cs @@ -30,9 +30,35 @@ namespace adminBlazor.Services _localStorage = localStorage; // Assure-toi que LocalStorage est initialisé correctement ici } - public Task Add(User model) + public async Task Add(UserModel model) { - throw new NotImplementedException(); + var currentData = await _localStorage.GetItemAsync>("data"); + + // Simulate the Id + model.Id = currentData.Max(s => s.Id) + 1; + + // Add the item to the current data + currentData.Add(UserFactory.Create(model)); + + // Save the image + var imagePathInfo = new DirectoryInfo($"{_webHostEnvironment.WebRootPath}/images"); + + // Check if the folder "images" exist + if (!imagePathInfo.Exists) + { + imagePathInfo.Create(); + } + + // Determine the image name + var fileName = new FileInfo($"{imagePathInfo}/{model.Name}.png"); + + // Write the file content + //await File.WriteAllBytesAsync(fileName.FullName, model.ImageContent); + + // Save the data + await _localStorage.SetItemAsync("data", currentData); + + } public Task Count() diff --git a/Project/adminBlazor/adminBlazor/Services/IDataService.cs b/Project/adminBlazor/adminBlazor/Services/IDataService.cs index 1fac8c3..5cf6366 100644 --- a/Project/adminBlazor/adminBlazor/Services/IDataService.cs +++ b/Project/adminBlazor/adminBlazor/Services/IDataService.cs @@ -7,7 +7,7 @@ namespace adminBlazor.Services public interface IDataService { - Task Add(User model); + Task Add(UserModel model); Task Count();