From 8824d51e9c2d682c2b4c4c759db984612956e642 Mon Sep 17 00:00:00 2001 From: Antoine Jourdain Date: Tue, 9 Jan 2024 14:33:08 +0100 Subject: [PATCH] =?UTF-8?q?Lorem=20ipsum=20dolor=20sit=20amet,=20consectet?= =?UTF-8?q?ur=20adipiscing=20elit,=20sed=20do=20eiusmod=20tempor=20incidid?= =?UTF-8?q?unt=20ut=20labore=20et=20dolore=20magna=20aliqua.=20En=20r?= =?UTF-8?q?=C3=A9alit=C3=A9=20c'est=20la=20suppression=20d'un=20utilisateu?= =?UTF-8?q?r=20avec=20popup?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Project/adminBlazor/adminBlazor/App.razor | 27 ++++++------- .../Modals/DeleteConfirmation.razor | 10 +++++ .../Modals/DeleteConfirmation.razor.cs | 38 +++++++++++++++++++ .../adminBlazor/adminBlazor/Pages/List.razor | 4 +- .../adminBlazor/Pages/List.razor.cs | 28 ++++++++++++++ .../adminBlazor/Pages/_Host.cshtml | 4 +- Project/adminBlazor/adminBlazor/Program.cs | 3 +- .../adminBlazor/Services/DataLocalService.cs | 24 ++++++++++++ .../adminBlazor/Services/IDataService.cs | 2 + .../adminBlazor/adminBlazor/_Imports.razor | 2 + .../adminBlazor/adminBlazor.csproj | 4 ++ 11 files changed, 129 insertions(+), 17 deletions(-) create mode 100644 Project/adminBlazor/adminBlazor/Modals/DeleteConfirmation.razor create mode 100644 Project/adminBlazor/adminBlazor/Modals/DeleteConfirmation.razor.cs diff --git a/Project/adminBlazor/adminBlazor/App.razor b/Project/adminBlazor/adminBlazor/App.razor index 60f5744..09ed54d 100644 --- a/Project/adminBlazor/adminBlazor/App.razor +++ b/Project/adminBlazor/adminBlazor/App.razor @@ -1,13 +1,14 @@ - - - - - - - Not found - -

Sorry, there's nothing at this address.

-
-
-
- + + + + + + + + Not found + +

Sorry, there's nothing at this address.

+
+
+
+
\ No newline at end of file diff --git a/Project/adminBlazor/adminBlazor/Modals/DeleteConfirmation.razor b/Project/adminBlazor/adminBlazor/Modals/DeleteConfirmation.razor new file mode 100644 index 0000000..edba1e0 --- /dev/null +++ b/Project/adminBlazor/adminBlazor/Modals/DeleteConfirmation.razor @@ -0,0 +1,10 @@ +
+ +

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

+ + + + +
\ No newline at end of file diff --git a/Project/adminBlazor/adminBlazor/Modals/DeleteConfirmation.razor.cs b/Project/adminBlazor/adminBlazor/Modals/DeleteConfirmation.razor.cs new file mode 100644 index 0000000..72c5c5d --- /dev/null +++ b/Project/adminBlazor/adminBlazor/Modals/DeleteConfirmation.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 DeleteConfirmation + { + [CascadingParameter] + public BlazoredModalInstance ModalInstance { get; set; } + + [Inject] + public IDataService DataService { get; set; } + + [Parameter] + public int Id { get; set; } + + private User item = new User(); + + protected override async Task OnInitializedAsync() + { + // Get the item + item = await DataService.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 b/Project/adminBlazor/adminBlazor/Pages/List.razor index abc232b..d323583 100644 --- a/Project/adminBlazor/adminBlazor/Pages/List.razor +++ b/Project/adminBlazor/adminBlazor/Pages/List.razor @@ -49,9 +49,9 @@ Editer + - - + diff --git a/Project/adminBlazor/adminBlazor/Pages/List.razor.cs b/Project/adminBlazor/adminBlazor/Pages/List.razor.cs index f33cd41..a3b3137 100644 --- a/Project/adminBlazor/adminBlazor/Pages/List.razor.cs +++ b/Project/adminBlazor/adminBlazor/Pages/List.razor.cs @@ -6,6 +6,9 @@ using adminBlazor.Models; using System.Net.Http; using System.Net.Http.Json; using adminBlazor.Services; +using Blazored.Modal.Services; +using Blazored.Modal; +using adminBlazor.Modals; namespace adminBlazor.Pages { @@ -24,6 +27,12 @@ namespace adminBlazor.Pages [Inject] public NavigationManager NavigationManager { get; set; } + [CascadingParameter] + public IModalService Modal { get; set; } + + [Inject] + public IDataService DataService { get; set; } + protected override async Task OnAfterRenderAsync(bool firstRender) { @@ -61,6 +70,25 @@ namespace adminBlazor.Pages _users = new List(response); // 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 DataService.Delete(id); + + // Reload the page + NavigationManager.NavigateTo("list", true); + } } } \ No newline at end of file diff --git a/Project/adminBlazor/adminBlazor/Pages/_Host.cshtml b/Project/adminBlazor/adminBlazor/Pages/_Host.cshtml index b08ae42..3afb6b6 100644 --- a/Project/adminBlazor/adminBlazor/Pages/_Host.cshtml +++ b/Project/adminBlazor/adminBlazor/Pages/_Host.cshtml @@ -12,7 +12,8 @@ - + + @@ -30,6 +31,7 @@ + diff --git a/Project/adminBlazor/adminBlazor/Program.cs b/Project/adminBlazor/adminBlazor/Program.cs index 67e6798..ade9f6f 100644 --- a/Project/adminBlazor/adminBlazor/Program.cs +++ b/Project/adminBlazor/adminBlazor/Program.cs @@ -6,6 +6,7 @@ using Blazorise.Bootstrap; using Blazorise.Icons.FontAwesome; using Blazored.LocalStorage; using adminBlazor.Services; +using Blazored.Modal; var builder = WebApplication.CreateBuilder(args); builder.Services.AddScoped(); @@ -16,7 +17,7 @@ builder.Services.AddSingleton(); builder.Services.AddHttpClient(); builder.Services.AddBlazoredLocalStorage(); - +builder.Services.AddBlazoredModal(); builder.Services diff --git a/Project/adminBlazor/adminBlazor/Services/DataLocalService.cs b/Project/adminBlazor/adminBlazor/Services/DataLocalService.cs index 766e303..ec16975 100644 --- a/Project/adminBlazor/adminBlazor/Services/DataLocalService.cs +++ b/Project/adminBlazor/adminBlazor/Services/DataLocalService.cs @@ -104,6 +104,30 @@ namespace adminBlazor.Services // Modify the content of the item + // Save the data + await _localStorage.SetItemAsync("data", currentData); + } + + public async Task Delete(int id) + { + // Get the current data + var currentData = await _localStorage.GetItemAsync>("data"); + + // Get the item int the list + var item = currentData.FirstOrDefault(w => w.Id == id); + + // Delete item in + currentData.Remove(item); + + // Delete the image + var imagePathInfo = new DirectoryInfo($"{_webHostEnvironment.WebRootPath}/images"); + var fileName = new FileInfo($"{imagePathInfo}/{item.Name}.png"); + + if (fileName.Exists) + { + File.Delete(fileName.FullName); + } + // Save the data await _localStorage.SetItemAsync("data", currentData); } diff --git a/Project/adminBlazor/adminBlazor/Services/IDataService.cs b/Project/adminBlazor/adminBlazor/Services/IDataService.cs index 711b4cc..1fac8c3 100644 --- a/Project/adminBlazor/adminBlazor/Services/IDataService.cs +++ b/Project/adminBlazor/adminBlazor/Services/IDataService.cs @@ -16,6 +16,8 @@ namespace adminBlazor.Services Task GetById(int id); Task Update(int id, UserModel model); + + Task Delete(int id); } } diff --git a/Project/adminBlazor/adminBlazor/_Imports.razor b/Project/adminBlazor/adminBlazor/_Imports.razor index 08bb737..7df73a7 100644 --- a/Project/adminBlazor/adminBlazor/_Imports.razor +++ b/Project/adminBlazor/adminBlazor/_Imports.razor @@ -10,3 +10,5 @@ @using adminBlazor.Shared @using Blazorise.DataGrid @using adminBlazor.Services +@using Blazored.Modal +@using Blazored.Modal.Services \ No newline at end of file diff --git a/Project/adminBlazor/adminBlazor/adminBlazor.csproj b/Project/adminBlazor/adminBlazor/adminBlazor.csproj index f5b377a..3b3d704 100644 --- a/Project/adminBlazor/adminBlazor/adminBlazor.csproj +++ b/Project/adminBlazor/adminBlazor/adminBlazor.csproj @@ -13,5 +13,9 @@ + + + +