From 0104e14baa134ae2b33f0b3a1f84ec523854e786 Mon Sep 17 00:00:00 2001 From: Antoine Jourdain Date: Mon, 15 Jan 2024 10:52:57 +0100 Subject: [PATCH 1/2] Fix affichage des listes de vocabulaire --- .../adminBlazor/Factories/VocListFactory.cs | 24 ++++++------- .../adminBlazor/Models/VocabularyList.cs | 10 +++--- .../adminBlazor/Models/VocabularyListModel.cs | 8 ++--- .../adminBlazor/Pages/EditVoc.razor | 6 ++-- .../adminBlazor/adminBlazor/Pages/Voc.razor | 16 ++++----- .../adminBlazor/Pages/Voc.razor.cs | 6 ++-- .../Services/VocListLocalService.cs | 36 ++++++++++++++++--- 7 files changed, 67 insertions(+), 39 deletions(-) diff --git a/Project/adminBlazor/adminBlazor/Factories/VocListFactory.cs b/Project/adminBlazor/adminBlazor/Factories/VocListFactory.cs index 431e46a..2c36cd0 100644 --- a/Project/adminBlazor/adminBlazor/Factories/VocListFactory.cs +++ b/Project/adminBlazor/adminBlazor/Factories/VocListFactory.cs @@ -13,10 +13,10 @@ namespace adminBlazor.Factories { return new VocabularyListModel { - id = voc.id, - name = voc.name, - image = voc.image, - aut = voc.aut + Id = voc.Id, + Name = voc.Name, + Image = voc.Image, + Aut = voc.Aut }; } @@ -24,19 +24,19 @@ namespace adminBlazor.Factories { return new VocabularyList { - id = voc.id, - name = voc.name, - image = voc.image, - aut = voc.aut + Id = voc.Id, + Name = voc.Name, + Image = voc.Image, + Aut = voc.Aut }; } public static void Update(VocabularyList item, VocabularyListModel voc) { - if (!string.IsNullOrEmpty(voc.name)) - item.name = voc.name; + if (!string.IsNullOrEmpty(voc.Name)) + item.Name = voc.Name; - if (!string.IsNullOrEmpty(voc.image)) - item.image = voc.image; + if (!string.IsNullOrEmpty(voc.Image)) + item.Image = voc.Image; } } diff --git a/Project/adminBlazor/adminBlazor/Models/VocabularyList.cs b/Project/adminBlazor/adminBlazor/Models/VocabularyList.cs index acd427c..28d4de7 100644 --- a/Project/adminBlazor/adminBlazor/Models/VocabularyList.cs +++ b/Project/adminBlazor/adminBlazor/Models/VocabularyList.cs @@ -3,10 +3,10 @@ namespace adminBlazor.Models { public class VocabularyList { - public int id; - public string name; - public string image; - public int? aut; - } + public int Id { get; set; } + public string Name { get; set; } + public string Image { get; set; } + public int? Aut { get; set; } + } } diff --git a/Project/adminBlazor/adminBlazor/Models/VocabularyListModel.cs b/Project/adminBlazor/adminBlazor/Models/VocabularyListModel.cs index 977e4eb..680e5e9 100644 --- a/Project/adminBlazor/adminBlazor/Models/VocabularyListModel.cs +++ b/Project/adminBlazor/adminBlazor/Models/VocabularyListModel.cs @@ -6,13 +6,13 @@ namespace adminBlazor.Models public class VocabularyListModel { [Required] - public int id { get; set; } + public int Id { get; set; } - public string name { get; set; } + public string Name { get; set; } - public string image { get; set; } + public string Image { get; set; } - public int? aut { get; set; } + public int? Aut { get; set; } } } diff --git a/Project/adminBlazor/adminBlazor/Pages/EditVoc.razor b/Project/adminBlazor/adminBlazor/Pages/EditVoc.razor index fe6710d..993fffc 100644 --- a/Project/adminBlazor/adminBlazor/Pages/EditVoc.razor +++ b/Project/adminBlazor/adminBlazor/Pages/EditVoc.razor @@ -11,14 +11,16 @@

diff --git a/Project/adminBlazor/adminBlazor/Pages/Voc.razor b/Project/adminBlazor/adminBlazor/Pages/Voc.razor index ec108a0..d39bfd3 100644 --- a/Project/adminBlazor/adminBlazor/Pages/Voc.razor +++ b/Project/adminBlazor/adminBlazor/Pages/Voc.razor @@ -16,16 +16,16 @@ ShowPager Responsive> - - - - + + + + @if (context is VocabularyList voc) { - @if (voc.aut != null) + @if (voc.Aut != null) { - @voc.aut + @voc.Aut } else { @@ -35,9 +35,9 @@ - + - Editer + Editer diff --git a/Project/adminBlazor/adminBlazor/Pages/Voc.razor.cs b/Project/adminBlazor/adminBlazor/Pages/Voc.razor.cs index 94a73f0..f33d9db 100644 --- a/Project/adminBlazor/adminBlazor/Pages/Voc.razor.cs +++ b/Project/adminBlazor/adminBlazor/Pages/Voc.razor.cs @@ -31,7 +31,7 @@ namespace adminBlazor.Pages public IVocListService VocListService { get; set; } - protected async Task OnAfterRenderAsync(bool firstRender) + /*protected async Task OnAfterRenderAsync(bool firstRender) { // Do not treat this action if is not the first render if (firstRender) @@ -48,7 +48,7 @@ namespace adminBlazor.Pages var originalData = Http.GetFromJsonAsync($"{NavigationManager.BaseUri}voc.json").Result; await LocalStorage.SetItemAsync("voc", originalData); } - } + }*/ private async Task OnReadData(DataGridReadDataEventArgs e) { @@ -59,7 +59,7 @@ 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("voc")).Skip((e.Page - 1) * e.PageSize).Take(e.PageSize).ToList(); if (!e.CancellationToken.IsCancellationRequested) { diff --git a/Project/adminBlazor/adminBlazor/Services/VocListLocalService.cs b/Project/adminBlazor/adminBlazor/Services/VocListLocalService.cs index 229ccb5..90747c0 100644 --- a/Project/adminBlazor/adminBlazor/Services/VocListLocalService.cs +++ b/Project/adminBlazor/adminBlazor/Services/VocListLocalService.cs @@ -34,7 +34,7 @@ namespace adminBlazor.Services { var currentList = await _localStorage.GetItemAsync>("voc"); - model.id = currentList.Max(s => s.id) + 1; + model.Id = currentList.Max(s => s.Id) + 1; currentList.Add(VocListFactory.Create(model)); @@ -74,14 +74,40 @@ namespace adminBlazor.Services public async Task GetById(int id) { - var currentLists = await _localStorage.GetItemAsync>("voc"); + var currentLists = await _localStorage.GetItemAsync>("voc"); - return new VocabularyList(); + var list = currentLists.FirstOrDefault(w => w.Id == id); + + if (list == null) + { + throw new Exception($"Unable to found the item with ID: {id}"); + } + + return list; } - public Task Update(int id, VocabularyListModel model) + public async Task Update(int id, VocabularyListModel model) { - throw new NotImplementedException(); + // Get the current data + var currentList = await _localStorage.GetItemAsync>("voc"); + + var voc = currentList.FirstOrDefault(w => w.Id == id); + + if (voc == null) + { + throw new Exception($"Unable to found the item with ID: {id}"); + } + + // Save the image + // + + VocListFactory.Update(voc, model); + + // Modify the content of the item + + + // Save the data + await _localStorage.SetItemAsync("voc", currentList); } public Task Delete(int id) From b35cb3509ffc8f31a1162aeb9407696359afc0ba Mon Sep 17 00:00:00 2001 From: Antoine Jourdain Date: Mon, 15 Jan 2024 11:23:20 +0100 Subject: [PATCH 2/2] =?UTF-8?q?=D0=A3=D0=B4=D0=B0=D0=BB=D0=B5=D0=BD=D0=B8?= =?UTF-8?q?=D0=B5=20=D1=81=D0=BF=D0=B8=D1=81=D0=BA=D0=B0=20=D1=81=D0=BB?= =?UTF-8?q?=D0=BE=D0=B2=D0=B0=D1=80=D1=8F=20rename=20des=20popup=20de=20de?= =?UTF-8?q?lete=20au=20passage?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...ion.razor => UserDeleteConfirmation.razor} | 2 +- ...zor.cs => UserDeleteConfirmation.razor.cs} | 2 +- .../Modals/VocListDeleteConfirmation.razor | 10 +++++ .../Modals/VocListDeleteConfirmation.razor.cs | 38 +++++++++++++++++++ .../adminBlazor/Pages/List.razor.cs | 2 +- .../adminBlazor/adminBlazor/Pages/Voc.razor | 1 + .../adminBlazor/Pages/Voc.razor.cs | 19 ++++++++++ .../Services/VocListLocalService.cs | 17 ++++++++- 8 files changed, 86 insertions(+), 5 deletions(-) rename Project/adminBlazor/adminBlazor/Modals/{DeleteConfirmation.razor => UserDeleteConfirmation.razor} (74%) rename Project/adminBlazor/adminBlazor/Modals/{DeleteConfirmation.razor.cs => UserDeleteConfirmation.razor.cs} (94%) create mode 100644 Project/adminBlazor/adminBlazor/Modals/VocListDeleteConfirmation.razor create mode 100644 Project/adminBlazor/adminBlazor/Modals/VocListDeleteConfirmation.razor.cs diff --git a/Project/adminBlazor/adminBlazor/Modals/DeleteConfirmation.razor b/Project/adminBlazor/adminBlazor/Modals/UserDeleteConfirmation.razor similarity index 74% rename from Project/adminBlazor/adminBlazor/Modals/DeleteConfirmation.razor rename to Project/adminBlazor/adminBlazor/Modals/UserDeleteConfirmation.razor index edba1e0..0de8d1e 100644 --- a/Project/adminBlazor/adminBlazor/Modals/DeleteConfirmation.razor +++ b/Project/adminBlazor/adminBlazor/Modals/UserDeleteConfirmation.razor @@ -1,7 +1,7 @@

- Are you sure you want to delete @item.Name ? + Are you sure you want to delete user : @item.Name ?

diff --git a/Project/adminBlazor/adminBlazor/Modals/DeleteConfirmation.razor.cs b/Project/adminBlazor/adminBlazor/Modals/UserDeleteConfirmation.razor.cs similarity index 94% rename from Project/adminBlazor/adminBlazor/Modals/DeleteConfirmation.razor.cs rename to Project/adminBlazor/adminBlazor/Modals/UserDeleteConfirmation.razor.cs index 72c5c5d..fcf6013 100644 --- a/Project/adminBlazor/adminBlazor/Modals/DeleteConfirmation.razor.cs +++ b/Project/adminBlazor/adminBlazor/Modals/UserDeleteConfirmation.razor.cs @@ -6,7 +6,7 @@ using adminBlazor.Models; namespace adminBlazor.Modals { - public partial class DeleteConfirmation + public partial class UserDeleteConfirmation { [CascadingParameter] public BlazoredModalInstance ModalInstance { get; set; } diff --git a/Project/adminBlazor/adminBlazor/Modals/VocListDeleteConfirmation.razor b/Project/adminBlazor/adminBlazor/Modals/VocListDeleteConfirmation.razor new file mode 100644 index 0000000..e847e52 --- /dev/null +++ b/Project/adminBlazor/adminBlazor/Modals/VocListDeleteConfirmation.razor @@ -0,0 +1,10 @@ +
+ +

+ Are you sure you want to delete vocabulary list : @item.Name ? +

+ + + + +
\ No newline at end of file diff --git a/Project/adminBlazor/adminBlazor/Modals/VocListDeleteConfirmation.razor.cs b/Project/adminBlazor/adminBlazor/Modals/VocListDeleteConfirmation.razor.cs new file mode 100644 index 0000000..3ddd00c --- /dev/null +++ b/Project/adminBlazor/adminBlazor/Modals/VocListDeleteConfirmation.razor.cs @@ -0,0 +1,38 @@ +using Microsoft.AspNetCore.Components; +using Blazored.Modal; +using Blazored.Modal.Services; +using adminBlazor.Services; +using adminBlazor.Models; + +namespace adminBlazor.Modals +{ + public partial class VocListDeleteConfirmation + { + [CascadingParameter] + public BlazoredModalInstance ModalInstance { get; set; } + + [Inject] + public IVocListService VocListService { get; set; } + + [Parameter] + public int Id { get; set; } + + private VocabularyList item = new VocabularyList(); + + protected override async Task OnInitializedAsync() + { + // Get the item + item = await VocListService.GetById(Id); + } + + void ConfirmDelete() + { + ModalInstance.CloseAsync(ModalResult.Ok(true)); + } + + void Cancel() + { + ModalInstance.CancelAsync(); + } + } +} \ No newline at end of file diff --git a/Project/adminBlazor/adminBlazor/Pages/List.razor.cs b/Project/adminBlazor/adminBlazor/Pages/List.razor.cs index a05fe67..34c129a 100644 --- a/Project/adminBlazor/adminBlazor/Pages/List.razor.cs +++ b/Project/adminBlazor/adminBlazor/Pages/List.razor.cs @@ -81,7 +81,7 @@ namespace adminBlazor.Pages var parameters = new ModalParameters(); parameters.Add("Id", id); - var modal = Modal.Show("Delete Confirmation", parameters); + var modal = Modal.Show("Delete Confirmation", parameters); var result = await modal.Result; if (result.Cancelled) diff --git a/Project/adminBlazor/adminBlazor/Pages/Voc.razor b/Project/adminBlazor/adminBlazor/Pages/Voc.razor index d39bfd3..63750c4 100644 --- a/Project/adminBlazor/adminBlazor/Pages/Voc.razor +++ b/Project/adminBlazor/adminBlazor/Pages/Voc.razor @@ -38,6 +38,7 @@ Editer + diff --git a/Project/adminBlazor/adminBlazor/Pages/Voc.razor.cs b/Project/adminBlazor/adminBlazor/Pages/Voc.razor.cs index f33d9db..74205f7 100644 --- a/Project/adminBlazor/adminBlazor/Pages/Voc.razor.cs +++ b/Project/adminBlazor/adminBlazor/Pages/Voc.razor.cs @@ -67,5 +67,24 @@ namespace adminBlazor.Pages totalVocList = await VocListService.Count();// an actual data for the current page } } + + private async void OnDelete(int id) + { + var parameters = new ModalParameters(); + parameters.Add("Id", id); + + var modal = Modal.Show("Delete Confirmation", parameters); + var result = await modal.Result; + + if (result.Cancelled) + { + return; + } + + await VocListService.Delete(id); + + // Reload the page + NavigationManager.NavigateTo("voc", true); + } } } \ No newline at end of file diff --git a/Project/adminBlazor/adminBlazor/Services/VocListLocalService.cs b/Project/adminBlazor/adminBlazor/Services/VocListLocalService.cs index 90747c0..95b7050 100644 --- a/Project/adminBlazor/adminBlazor/Services/VocListLocalService.cs +++ b/Project/adminBlazor/adminBlazor/Services/VocListLocalService.cs @@ -110,9 +110,22 @@ namespace adminBlazor.Services await _localStorage.SetItemAsync("voc", currentList); } - public Task Delete(int id) + public async Task Delete(int id) { - throw new NotImplementedException(); + // Get the current data + var currentList = await _localStorage.GetItemAsync>("voc"); + + // Get the item int the list + var voc = currentList.FirstOrDefault(w => w.Id == id); + + // Delete item in + currentList.Remove(voc); + + // Delete the image + + + // Save the data + await _localStorage.SetItemAsync("voc", currentList); } } }