From 2f203f962a86082088b34badba29b051ee6385d1 Mon Sep 17 00:00:00 2001 From: pasquizzat Date: Tue, 15 Nov 2022 11:18:19 +0100 Subject: [PATCH] On peut supprimer :wastebasket: des elements maintenant --- .../CetteAppliVaMarcher/App.razor | 26 ++++++------ .../CetteAppliVaMarcher.csproj | 1 + .../Modals/DeleteConfirmation.razor | 10 +++++ .../Modals/DeleteConfirmation.razor.cs | 38 ++++++++++++++++++ .../CetteAppliVaMarcher/Pages/List.razor | 1 + .../CetteAppliVaMarcher/Pages/List.razor.cs | 28 +++++++++++++ .../CetteAppliVaMarcher/Pages/_Layout.cshtml | 3 ++ .../CetteAppliVaMarcher/Program.cs | 2 + .../Services/DataLocalService.cs | 23 +++++++++++ .../Services/IDataServices.cs | 1 + .../CetteAppliVaMarcher/_Imports.razor | 4 +- .../wwwroot/images/cactus.png | Bin 2267 -> 0 bytes 12 files changed, 124 insertions(+), 13 deletions(-) create mode 100644 CetteAppliVaMarcher/CetteAppliVaMarcher/Modals/DeleteConfirmation.razor create mode 100644 CetteAppliVaMarcher/CetteAppliVaMarcher/Modals/DeleteConfirmation.razor.cs delete mode 100644 CetteAppliVaMarcher/CetteAppliVaMarcher/wwwroot/images/cactus.png diff --git a/CetteAppliVaMarcher/CetteAppliVaMarcher/App.razor b/CetteAppliVaMarcher/CetteAppliVaMarcher/App.razor index 623580d..6346f35 100644 --- a/CetteAppliVaMarcher/CetteAppliVaMarcher/App.razor +++ b/CetteAppliVaMarcher/CetteAppliVaMarcher/App.razor @@ -1,12 +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/CetteAppliVaMarcher/CetteAppliVaMarcher/CetteAppliVaMarcher.csproj b/CetteAppliVaMarcher/CetteAppliVaMarcher/CetteAppliVaMarcher.csproj index 93b929d..f2eba01 100644 --- a/CetteAppliVaMarcher/CetteAppliVaMarcher/CetteAppliVaMarcher.csproj +++ b/CetteAppliVaMarcher/CetteAppliVaMarcher/CetteAppliVaMarcher.csproj @@ -8,6 +8,7 @@ + diff --git a/CetteAppliVaMarcher/CetteAppliVaMarcher/Modals/DeleteConfirmation.razor b/CetteAppliVaMarcher/CetteAppliVaMarcher/Modals/DeleteConfirmation.razor new file mode 100644 index 0000000..b565665 --- /dev/null +++ b/CetteAppliVaMarcher/CetteAppliVaMarcher/Modals/DeleteConfirmation.razor @@ -0,0 +1,10 @@ +
+ +

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

+ + + + +
\ No newline at end of file diff --git a/CetteAppliVaMarcher/CetteAppliVaMarcher/Modals/DeleteConfirmation.razor.cs b/CetteAppliVaMarcher/CetteAppliVaMarcher/Modals/DeleteConfirmation.razor.cs new file mode 100644 index 0000000..eea4c62 --- /dev/null +++ b/CetteAppliVaMarcher/CetteAppliVaMarcher/Modals/DeleteConfirmation.razor.cs @@ -0,0 +1,38 @@ +using Blazored.Modal; +using Blazored.Modal.Services; +using CetteAppliVaMarcher.Models; +using CetteAppliVaMarcher.Services; +using Microsoft.AspNetCore.Components; + +namespace CetteAppliVaMarcher.Modals +{ + public partial class DeleteConfirmation + { + [CascadingParameter] + public BlazoredModalInstance ModalInstance { get; set; } + + [Inject] + public IDataService DataService { get; set; } + + [Parameter] + public int Id { get; set; } + + private Item item = new Item(); + + protected override async Task OnInitializedAsync() + { + // Get the item + item = await DataService.GetById(Id); + } + + void ConfirmDelete() + { + ModalInstance.CloseAsync(ModalResult.Ok(true)); + } + + void Cancel() + { + ModalInstance.CancelAsync(); + } + } +} diff --git a/CetteAppliVaMarcher/CetteAppliVaMarcher/Pages/List.razor b/CetteAppliVaMarcher/CetteAppliVaMarcher/Pages/List.razor index 42d4f39..61faa66 100644 --- a/CetteAppliVaMarcher/CetteAppliVaMarcher/Pages/List.razor +++ b/CetteAppliVaMarcher/CetteAppliVaMarcher/Pages/List.razor @@ -47,6 +47,7 @@ Editer + \ No newline at end of file diff --git a/CetteAppliVaMarcher/CetteAppliVaMarcher/Pages/List.razor.cs b/CetteAppliVaMarcher/CetteAppliVaMarcher/Pages/List.razor.cs index 2c12831..710b31c 100644 --- a/CetteAppliVaMarcher/CetteAppliVaMarcher/Pages/List.razor.cs +++ b/CetteAppliVaMarcher/CetteAppliVaMarcher/Pages/List.razor.cs @@ -1,5 +1,8 @@ using Blazored.LocalStorage; +using Blazored.Modal; +using Blazored.Modal.Services; using Blazorise.DataGrid; +using CetteAppliVaMarcher.Modals; using CetteAppliVaMarcher.Models; using CetteAppliVaMarcher.Services; using Microsoft.AspNetCore.Components; @@ -17,6 +20,12 @@ namespace CetteAppliVaMarcher.Pages [Inject] public IWebHostEnvironment WebHostEnvironment { get; set; } + + [Inject] + public NavigationManager NavigationManager { get; set; } + + [CascadingParameter] + public IModalService Modal { get; set; } private async Task OnReadData(DataGridReadDataEventArgs e) { @@ -31,5 +40,24 @@ namespace CetteAppliVaMarcher.Pages totalItem = await DataService.Count(); } } + private async void OnDelete(int id) + { + var parameters = new ModalParameters(); + parameters.Add(nameof(Item.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); + } + } } diff --git a/CetteAppliVaMarcher/CetteAppliVaMarcher/Pages/_Layout.cshtml b/CetteAppliVaMarcher/CetteAppliVaMarcher/Pages/_Layout.cshtml index bd5016a..6397313 100644 --- a/CetteAppliVaMarcher/CetteAppliVaMarcher/Pages/_Layout.cshtml +++ b/CetteAppliVaMarcher/CetteAppliVaMarcher/Pages/_Layout.cshtml @@ -32,6 +32,9 @@ + + + diff --git a/CetteAppliVaMarcher/CetteAppliVaMarcher/Program.cs b/CetteAppliVaMarcher/CetteAppliVaMarcher/Program.cs index 72af469..d7e1296 100644 --- a/CetteAppliVaMarcher/CetteAppliVaMarcher/Program.cs +++ b/CetteAppliVaMarcher/CetteAppliVaMarcher/Program.cs @@ -6,6 +6,7 @@ using Blazored.LocalStorage; using Microsoft.AspNetCore.Components; using Microsoft.AspNetCore.Components.Web; using CetteAppliVaMarcher.Services; +using Blazored.Modal; var builder = WebApplication.CreateBuilder(args); @@ -21,6 +22,7 @@ builder.Services .AddFontAwesomeIcons(); builder.Services.AddScoped(); builder.Services.AddBlazoredLocalStorage(); +builder.Services.AddBlazoredModal(); var app = builder.Build(); diff --git a/CetteAppliVaMarcher/CetteAppliVaMarcher/Services/DataLocalService.cs b/CetteAppliVaMarcher/CetteAppliVaMarcher/Services/DataLocalService.cs index 955ed3c..d2256cb 100644 --- a/CetteAppliVaMarcher/CetteAppliVaMarcher/Services/DataLocalService.cs +++ b/CetteAppliVaMarcher/CetteAppliVaMarcher/Services/DataLocalService.cs @@ -133,6 +133,29 @@ namespace CetteAppliVaMarcher.Services // Modify the content of the item ItemFactory.Update(item, model); + // 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/CetteAppliVaMarcher/CetteAppliVaMarcher/Services/IDataServices.cs b/CetteAppliVaMarcher/CetteAppliVaMarcher/Services/IDataServices.cs index 9389095..e9f221a 100644 --- a/CetteAppliVaMarcher/CetteAppliVaMarcher/Services/IDataServices.cs +++ b/CetteAppliVaMarcher/CetteAppliVaMarcher/Services/IDataServices.cs @@ -9,5 +9,6 @@ namespace CetteAppliVaMarcher.Services Task> List(int currentPage, int pageSize); Task GetById(int id); Task Update(int id, ItemModel model); + Task Delete(int id); } } \ No newline at end of file diff --git a/CetteAppliVaMarcher/CetteAppliVaMarcher/_Imports.razor b/CetteAppliVaMarcher/CetteAppliVaMarcher/_Imports.razor index 929804c..0ce02ea 100644 --- a/CetteAppliVaMarcher/CetteAppliVaMarcher/_Imports.razor +++ b/CetteAppliVaMarcher/CetteAppliVaMarcher/_Imports.razor @@ -8,4 +8,6 @@ @using Microsoft.JSInterop @using CetteAppliVaMarcher @using CetteAppliVaMarcher.Shared -@using Blazorise.DataGrid \ No newline at end of file +@using Blazorise.DataGrid +@using Blazored.Modal +@using Blazored.Modal.Services \ No newline at end of file diff --git a/CetteAppliVaMarcher/CetteAppliVaMarcher/wwwroot/images/cactus.png b/CetteAppliVaMarcher/CetteAppliVaMarcher/wwwroot/images/cactus.png deleted file mode 100644 index a7446c9e8a8c755f1e21faf389634136d44fed6d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2267 zcmeHIXBIq!$_ocGH~zGZI(lvb1m006)n z*5;1;HEW*%QWE<)?4{2);XtUPl_>z%dun#Sk$ecXg8~56=`uSWhX4Qxz%5&6i`?AY zyu7@(Z{OzU=NA+d6c-nll$4;+=+e^Cva+)B^74v`3JeB=#bPTfD{(knRaF%pkFTz- zCJ+dpKYy;Rt*xu8BNB=A_4N%64ULVBBoe8mrKPpCwXLnKy}iA&v$MOqyQin8x3{;i zudlzqe_&vMLZJ)}4pOPqp`jrfjYg-_hlht53FMd2nHe6BH#<8!H#f)U^XKR17Zw&47Z;b7mX?>7S5{U80>SF) z>e|}c`uh6D#>VF6rcfx{+S(F{MBCfjJ3BjKv3PfPcW-ZR-2fMBIvBA&SM#k#iJoyiib{34ADdDcA_31T)KpX{irS?~{BklHj+M+J% zdw&s15$x2E%ww_b0H zGN`Wrd|F^q*B=xc1K~Lt??CkcoFt51b6of2;ey0^_r$9zTQI|#vY7M?ow*q>9SF8- z@0iVrUJnQmYRvoR7rLH3!`KV^4KZPJv+ZSUf{CD-c{CJf7_T?DikxnFe$i3IWg0g2 z8v2|y1wY;cR@ycOa~`B6D4Xd0Y?F=Zy2WL(Sz}{QZDAy5>($Mi!c@bBwP~2}xXFM4 zuZi236Fe2m@7jC35T~iKy6(nCi6p^xq+%VK6rWTqDTU9^HVZc7N>f=YvH1%#>G~R% ztWwS$S4Cj$c|}Mt5&b?1PH1XsJ*=P*c;8XHl`h;qD`)csmh^*;Ziip9o=jM3227F8 zGZ>AGkd9ka_Ac5MHM|7lJ(R+fRS_ES7v)@X=iSMWqkq4Nk|x#Rgm$f_t*}zQ!jA|K zRz)QkD}}qV_E;EYEdSU3?oVs4d{vw@j`_P7cgT_%2??YQ!jK#rBos#}?S6pO{GJzO zSO%*hRbUDLG8fcv#_##pk;k6BOB-r6^)?$g;r~avGaYk)R-Th4hjZ1|vu#)R@`K6r z!L*z-e50v`Ks?iP*$*8`EH=wk%z6~8w~BZ<)M;hu8QxwA;?&Fi)&+0Vy{C;EyQ>^& ziS+-4nd#d=aM{pQ2suv|PKaoN*Fq>#LKsyUq)t4amGHVQh8@jG)`|u;8%Whfh_5J< zTN(*rSx-(aM+k(N5a9hTjs1}Zsax&EyR-zOwm;8l$&nN7QZ{};vtz%D6v=9-)H!P? z{bY_NSum|GVuI^xUE?OoLe*g*)SZ#ttQeoK#=uV{@mFJT2ZPmNE{%gy_uU3)(0l9x zx73I5aUQ83j};0gQ0ZxhqEjxs510W4{evv(Gw7`OBsfwDI*IqD5T{{Tv}C~r`M9YN zah2EQ*j>4xg4@A5?ZY_GR zmBeb<>8q*!FOJv@Tn9(^si4T-^I<>vLI(56kI}gtf%j20pN=VJDtS<=V}+tg$0Kbl z!!;H?``-8vO}uA81l5)Nwwb>B1i#R zUwuubIGlO9-DiKM2qM^#_tA4`D1xj!Dx_MzL$48HXY3cwwR8R_eDtd0wig>