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 207e97c..bacb381 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 @@ + + + +