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

Delete

-

Are you sure you want to delete this?

-
-

License

-
-
-
- @Html.DisplayNameFor(model => model.Name) -
-
- @Html.DisplayFor(model => model.Name) -
-
- @Html.DisplayNameFor(model => model.SPDX) -
-
- @Html.DisplayFor(model => model.SPDX) -
-
- @Html.DisplayNameFor(model => model.FsfApproved) -
-
- @Html.DisplayFor(model => model.FsfApproved) -
-
- @Html.DisplayNameFor(model => model.OsiApproved) -
-
- @Html.DisplayFor(model => model.OsiApproved) -
-
- @Html.DisplayNameFor(model => model.Link) -
-
- @Html.DisplayFor(model => model.Link) -
-
- @Html.DisplayNameFor(model => model.Text) -
-
- @Html.DisplayFor(model => model.Text) -
-
-
- - - - Back to List - -
-
\ No newline at end of file diff --git a/Marechai/Pages/Admin/Licenses.razor b/Marechai/Pages/Admin/Licenses.razor index b0d92473..ca3eadf6 100644 --- a/Marechai/Pages/Admin/Licenses.razor +++ b/Marechai/Pages/Admin/Licenses.razor @@ -31,7 +31,6 @@ } @page "/admin/licenses" -@using Marechai.Database.Models @inherits OwningComponentBase @inject IStringLocalizer L @attribute [Authorize(Roles = "UberAdmin, Admin")] @@ -99,21 +98,26 @@ @L["Edit"] - - @L["Delete"] - + } -@code -{ - List _licenses; - - protected override async Task OnInitializedAsync() - { - _licenses = await Service.GetAsync(); - } -} \ No newline at end of file + + + + + @L["Delete license"] + + + + @string.Format(@L["Are you sure you want to delete {0}?"], _license?.Name) + + + + + + + diff --git a/Marechai/Pages/Admin/Licenses.razor.cs b/Marechai/Pages/Admin/Licenses.razor.cs new file mode 100644 index 00000000..a60a0fab --- /dev/null +++ b/Marechai/Pages/Admin/Licenses.razor.cs @@ -0,0 +1,52 @@ +using System.Collections.Generic; +using System.Linq; +using System.Threading.Tasks; +using Blazorise; +using Marechai.Database.Models; + +namespace Marechai.Pages.Admin +{ + public partial class Licenses + { + bool _deleteInProgress; + Modal _frmDelete; + License _license; + List _licenses; + + void ShowModal(int itemId) + { + _license = _licenses.FirstOrDefault(n => n.Id == itemId); + _frmDelete.Show(); + } + + void HideModal() => _frmDelete.Hide(); + + async void ConfirmDelete() + { + if(_license is null) + return; + + _deleteInProgress = true; + _licenses = null; + + // Yield thread to let UI to update + await Task.Yield(); + + await Service.DeleteAsync(_license.Id); + _licenses = 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) => _license = null; + + protected override async Task OnInitializedAsync() => _licenses = await Service.GetAsync(); + } +} \ No newline at end of file diff --git a/Marechai/Resources/Services/LicensesService.es.resx b/Marechai/Resources/Services/LicensesService.es.resx index 2f510632..1a273acb 100644 --- a/Marechai/Resources/Services/LicensesService.es.resx +++ b/Marechai/Resources/Services/LicensesService.es.resx @@ -162,4 +162,16 @@ Eliminar Delete + + Eliminar licencia + Delete license + + + ¿Está seguro de que desea borrar {0}? + {0} license name + + + Cancelar + Cancel + \ No newline at end of file diff --git a/Marechai/Services/LicensesService.cs b/Marechai/Services/LicensesService.cs index 6136cf6a..1999974c 100644 --- a/Marechai/Services/LicensesService.cs +++ b/Marechai/Services/LicensesService.cs @@ -13,6 +13,22 @@ namespace Marechai.Services public LicensesService(MarechaiContext context) => _context = context; public async Task> GetAsync() => - await _context.Licenses.OrderBy(l => l.Name).Select(l => new License(){FsfApproved = l.FsfApproved, Id= l.Id, Link = l.Link, Name = l.Name, OsiApproved = l.OsiApproved, SPDX = l.SPDX}).ToListAsync(); + await _context.Licenses.OrderBy(l => l.Name).Select(l => new License + { + FsfApproved = l.FsfApproved, Id = l.Id, Link = l.Link, Name = l.Name, + OsiApproved = l.OsiApproved, SPDX = l.SPDX + }).ToListAsync(); + + public async Task DeleteAsync(int id) + { + License item = await _context.Licenses.FindAsync(id); + + if(item is null) + return; + + _context.Licenses.Remove(item); + + await _context.SaveChangesAsync(); + } } } \ No newline at end of file