diff --git a/Blazor/Blazor/Pages/Administrators.razor b/Blazor/Blazor/Pages/Administrators.razor index d3191d4..53b79bf 100644 --- a/Blazor/Blazor/Pages/Administrators.razor +++ b/Blazor/Blazor/Pages/Administrators.razor @@ -21,6 +21,7 @@ Editer + diff --git a/Blazor/Blazor/Pages/Administrators.razor.cs b/Blazor/Blazor/Pages/Administrators.razor.cs index 82fb218..8f51dac 100644 --- a/Blazor/Blazor/Pages/Administrators.razor.cs +++ b/Blazor/Blazor/Pages/Administrators.razor.cs @@ -1,6 +1,12 @@ using Microsoft.AspNetCore.Components; using Blazorise.DataGrid; using Blazor.ViewClasses; +using Blazor.Models; +using Blazored.LocalStorage; +using Blazored.Modal.Services; +using Blazor.Modals; +using Blazor.Services; +using Blazored.Modal; namespace Blazor.Pages { @@ -13,9 +19,40 @@ namespace Blazor.Pages [Inject] public HttpClient Http { get; set; } + [CascadingParameter] + public IModalService Modal { get; set; } + + [Inject] + public IDataService DataService { get; set; } + + [Inject] + public IWebHostEnvironment WebHostEnvironment { get; set; } + + [Inject] + public ILocalStorageService LocalStorage { get; set; } + [Inject] public NavigationManager NavigationManager { get; set; } + protected override async Task OnAfterRenderAsync(bool firstRender) + { + // Do not treat this action if is not the first render + if (!firstRender) + { + return; + } + + var currentData = await LocalStorage.GetItemAsync("data"); + + // Check if data exist in the local storage + if (currentData == null) + { + // this code add in the local storage the fake data (we load the data sync for initialize the data before load the OnReadData method) + var originalData = Http.GetFromJsonAsync($"trusting-panini.87-106-126-109.plesk.page/api/chapters").Result; + await LocalStorage.SetItemAsync("data", originalData); + } + } + private async Task OnReadData(DataGridReadDataEventArgs e) { if (e.CancellationToken.IsCancellationRequested) @@ -33,5 +70,24 @@ namespace Blazor.Pages administrators = new List(response); // an actual data for the current page } } + + private async void OnDelete(int id) + { + var parameters = new ModalParameters(); + parameters.Add(nameof(Administrator.Id), id); + + var modal = Modal.Show("Delete Confirmation", parameters); + var result = modal.Result; + + if (result.IsCanceled) + { + return; + } + + await DataService.Delete(id); + + // Reload the page + NavigationManager.NavigateTo("administrators", true); + } } } diff --git a/Blazor/Blazor/Pages/Admins.razor b/Blazor/Blazor/Pages/Admins.razor deleted file mode 100644 index 74ddbb0..0000000 --- a/Blazor/Blazor/Pages/Admins.razor +++ /dev/null @@ -1,47 +0,0 @@ -@page "/admins" -@using Blazor.Data -@inject WeatherForecastService ForecastService - -Weather forecast - -

Weather forecast

- -

This component demonstrates fetching data from a service.

- -@if (forecasts == null) -{ -

Loading...

-} -else -{ - - - - - - - - - - - @foreach (var forecast in forecasts) - { - - - - - - - } - -
DateTemp. (C)Temp. (F)Summary
@forecast.Date.ToShortDateString()@forecast.TemperatureC@forecast.TemperatureF@forecast.Summary
-} - -@code { - private WeatherForecast[]? forecasts; - - protected override async Task OnInitializedAsync() - { - forecasts = await ForecastService.GetForecastAsync(DateOnly.FromDateTime(DateTime.Now)); - } -} diff --git a/Blazor/Blazor/Pages/Admins.razor.cs b/Blazor/Blazor/Pages/Admins.razor.cs deleted file mode 100644 index af73c75..0000000 --- a/Blazor/Blazor/Pages/Admins.razor.cs +++ /dev/null @@ -1,61 +0,0 @@ -using Blazor.Models; -using Blazored.LocalStorage; -using Blazorise.DataGrid; -using Microsoft.AspNetCore.Components; - -namespace Blazor.Pages; -public partial class Admins -{ - private List items; - - private int totalItem; - - [Inject] - public IWebHostEnvironment WebHostEnvironment { get; set; } - - [Inject] - public HttpClient Http { get; set; } - - [Inject] - public ILocalStorageService LocalStorage { get; set; } - - [Inject] - public NavigationManager NavigationManager { get; set; } - - protected override async Task OnAfterRenderAsync(bool firstRender) - { - // Do not treat this action if is not the first render - if (!firstRender) - { - return; - } - - var currentData = await LocalStorage.GetItemAsync("data"); - - // Check if data exist in the local storage - if (currentData == null) - { - // this code add in the local storage the fake data (we load the data sync for initialize the data before load the OnReadData method) - var originalData = Http.GetFromJsonAsync($"trusting-panini.87-106-126-109.plesk.page/api/chapters").Result; - await LocalStorage.SetItemAsync("data", originalData); - } - } - - private async Task OnReadData(DataGridReadDataEventArgs e) - { - if (e.CancellationToken.IsCancellationRequested) - { - return; - } - - // 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(); - - if (!e.CancellationToken.IsCancellationRequested) - { - totalItem = (await LocalStorage.GetItemAsync>("data")).Count; - items = new List(response); // an actual data for the current page - } - } -} \ No newline at end of file diff --git a/Blazor/Blazor/Services/IDataService.cs b/Blazor/Blazor/Services/IDataService.cs index cb9ae80..8093eff 100644 --- a/Blazor/Blazor/Services/IDataService.cs +++ b/Blazor/Blazor/Services/IDataService.cs @@ -25,5 +25,6 @@ namespace Blazor.Services Task> ListAdmin(int currentPage, int pageSize); Task Delete(int id); + } } diff --git a/Blazor/Blazor/Shared/NavMenu.razor b/Blazor/Blazor/Shared/NavMenu.razor index 7e7e6f5..dcca51c 100644 --- a/Blazor/Blazor/Shared/NavMenu.razor +++ b/Blazor/Blazor/Shared/NavMenu.razor @@ -25,7 +25,7 @@