diff --git a/Marechai/Areas/Admin/Views/People/Delete.cshtml b/Marechai/Areas/Admin/Views/People/Delete.cshtml deleted file mode 100644 index bc6a51fc..00000000 --- a/Marechai/Areas/Admin/Views/People/Delete.cshtml +++ /dev/null @@ -1,86 +0,0 @@ -@model Marechai.Database.Models.Person - -@{ - ViewData["Title"] = "Delete"; -} -

Delete

-

Are you sure you want to delete this?

-
-

Person

-
-
-
- @Html.DisplayNameFor(model => model.Name) -
-
- @Html.DisplayFor(model => model.Name) -
-
- @Html.DisplayNameFor(model => model.Surname) -
-
- @Html.DisplayFor(model => model.Surname) -
-
- @Html.DisplayNameFor(model => model.Alias) -
-
- @Html.DisplayFor(model => model.Alias) -
-
- @Html.DisplayNameFor(model => model.DisplayName) -
-
- @Html.DisplayFor(model => model.DisplayName) -
-
- @Html.DisplayNameFor(model => model.CountryOfBirth) -
-
- @Html.DisplayFor(model => model.CountryOfBirth.Name) -
-
- @Html.DisplayNameFor(model => model.BirthDate) -
-
- @Html.DisplayFor(model => model.BirthDate) -
-
- @Html.DisplayNameFor(model => model.DeathDate) -
-
- @Html.DisplayFor(model => model.DeathDate) -
-
- @Html.DisplayNameFor(model => model.Webpage) -
-
- @Html.DisplayFor(model => model.Webpage) -
-
- @Html.DisplayNameFor(model => model.Twitter) -
-
- @if (Model.Twitter != null) - { - @Html.DisplayFor(model => model.Twitter) - } -
-
- @Html.DisplayNameFor(model => model.Facebook) -
-
- @if (Model.Facebook != null) - { - @Html.DisplayFor(model => model.Facebook) - } -
-
-
- - - - Back to List - -
-
\ No newline at end of file diff --git a/Marechai/Pages/Admin/People.razor b/Marechai/Pages/Admin/People.razor index 7f673319..c79eb887 100644 --- a/Marechai/Pages/Admin/People.razor +++ b/Marechai/Pages/Admin/People.razor @@ -111,21 +111,26 @@ @L["Edit"] - - @L["Delete"] - + } -@code -{ - List _people; - - protected override async Task OnInitializedAsync() - { - _people = await Service.GetAsync(); - } -} \ No newline at end of file + + + + + @L["Delete person"] + + + + @string.Format(@L["Are you sure you want to delete {0}?"], _person?.FullName) + + + + + + + diff --git a/Marechai/Pages/Admin/People.razor.cs b/Marechai/Pages/Admin/People.razor.cs new file mode 100644 index 00000000..bc39137a --- /dev/null +++ b/Marechai/Pages/Admin/People.razor.cs @@ -0,0 +1,52 @@ +using System.Collections.Generic; +using System.Linq; +using System.Threading.Tasks; +using Blazorise; +using Marechai.ViewModels; + +namespace Marechai.Pages.Admin +{ + public partial class People + { + bool _deleteInProgress; + Modal _frmDelete; + List _people; + PersonViewModel _person; + + void ShowModal(int itemId) + { + _person = _people.FirstOrDefault(n => n.Id == itemId); + _frmDelete.Show(); + } + + void HideModal() => _frmDelete.Hide(); + + async void ConfirmDelete() + { + if(_person is null) + return; + + _deleteInProgress = true; + _people = null; + + // Yield thread to let UI to update + await Task.Yield(); + + await Service.DeleteAsync(_person.Id); + _people = await Service.GetAsync(); + + _deleteInProgress = false; + _frmDelete.Hide(); + + // Yield thread to let UI to update + await Task.Yield(); + + // Tell we finished loading + StateHasChanged(); + } + + void ModalClosing(ModalClosingEventArgs obj) => _person = null; + + protected override async Task OnInitializedAsync() => _people = await Service.GetAsync(); + } +} \ No newline at end of file diff --git a/Marechai/Resources/Services/PeopleService.es.resx b/Marechai/Resources/Services/PeopleService.es.resx index 35a7c312..0bcc03e5 100644 --- a/Marechai/Resources/Services/PeopleService.es.resx +++ b/Marechai/Resources/Services/PeopleService.es.resx @@ -170,4 +170,16 @@ Eliminar Delete + + Eliminar persona + Delete person + + + ¿Está seguro de que desea borrar a {0}? + {0} person name + + + Cancelar + Cancel + \ No newline at end of file diff --git a/Marechai/Services/PeopleService.cs b/Marechai/Services/PeopleService.cs index def993b2..a4a52ffe 100644 --- a/Marechai/Services/PeopleService.cs +++ b/Marechai/Services/PeopleService.cs @@ -22,5 +22,17 @@ namespace Marechai.Services Twitter = p.Twitter, Facebook = p.Facebook, Photo = p.Photo, Alias = p.Alias, DisplayName = p.DisplayName }).ToListAsync(); + + public async Task DeleteAsync(int id) + { + Person item = await _context.People.FindAsync(id); + + if(item is null) + return; + + _context.People.Remove(item); + + await _context.SaveChangesAsync(); + } } } \ No newline at end of file