From 172e61c1fde92a65598c1de03dce235b4c9c800f Mon Sep 17 00:00:00 2001 From: Natalia Portillo Date: Fri, 12 Sep 2025 12:55:15 +0100 Subject: [PATCH] Add Compact Disc Offsets management view with delete functionality --- .../Components/Admin/AdminNavMenu.razor | 3 + .../Admin/Pages/CompactDiscOffsets/View.razor | 97 +++++++++++++++++++ .../Pages/CompactDiscOffsets/View.razor.cs | 75 ++++++++++++++ 3 files changed, 175 insertions(+) create mode 100644 Aaru.Server/Components/Admin/Pages/CompactDiscOffsets/View.razor create mode 100644 Aaru.Server/Components/Admin/Pages/CompactDiscOffsets/View.razor.cs diff --git a/Aaru.Server/Components/Admin/AdminNavMenu.razor b/Aaru.Server/Components/Admin/AdminNavMenu.razor index f6c45601..f87e95e1 100644 --- a/Aaru.Server/Components/Admin/AdminNavMenu.razor +++ b/Aaru.Server/Components/Admin/AdminNavMenu.razor @@ -17,6 +17,9 @@ Commands + + Compact Disc Offsets + Filesystems diff --git a/Aaru.Server/Components/Admin/Pages/CompactDiscOffsets/View.razor b/Aaru.Server/Components/Admin/Pages/CompactDiscOffsets/View.razor new file mode 100644 index 00000000..74edccf8 --- /dev/null +++ b/Aaru.Server/Components/Admin/Pages/CompactDiscOffsets/View.razor @@ -0,0 +1,97 @@ +@page "/admin/cd-offsets" +@attribute [Authorize] +@layout AdminLayout +@rendermode InteractiveServer + +@inject Microsoft.EntityFrameworkCore.IDbContextFactory DbContextFactory + +Compact Disc Offsets + +@if(!_initialized) +{ +
+

Loading...

+
+ + return; +} + +
+

Compact Disc Offsets

+ + + + + + + + + + + + + + + @foreach(CompactDiscOffset item in _items) + { + + + + + + + + + + + } + +
+ @DisplayNameHelper.GetDisplayName(typeof(CompactDiscOffset), nameof(CompactDiscOffset.Manufacturer)) + + @DisplayNameHelper.GetDisplayName(typeof(CompactDiscOffset), nameof(CompactDiscOffset.Model)) + + @DisplayNameHelper.GetDisplayName(typeof(CompactDiscOffset), nameof(CompactDiscOffset.Offset)) + + @DisplayNameHelper.GetDisplayName(typeof(CompactDiscOffset), nameof(CompactDiscOffset.Submissions)) + + @DisplayNameHelper.GetDisplayName(typeof(CompactDiscOffset), nameof(CompactDiscOffset.Agreement)) + + @DisplayNameHelper.GetDisplayName(typeof(CompactDiscOffset), nameof(CompactDiscOffset.AddedWhen)) + + @DisplayNameHelper.GetDisplayName(typeof(CompactDiscOffset), nameof(CompactDiscOffset.ModifiedWhen)) + + Actions +
+ @item.Manufacturer + + @item.Model + + @item.Offset + + @item.Submissions + + @item.Agreement + + @item.AddedWhen + + @item.ModifiedWhen + + + Edit + + +
+
+ + + +
Are you sure you want to delete this offset?
+
+ + + + +
\ No newline at end of file diff --git a/Aaru.Server/Components/Admin/Pages/CompactDiscOffsets/View.razor.cs b/Aaru.Server/Components/Admin/Pages/CompactDiscOffsets/View.razor.cs new file mode 100644 index 00000000..0a7f24b3 --- /dev/null +++ b/Aaru.Server/Components/Admin/Pages/CompactDiscOffsets/View.razor.cs @@ -0,0 +1,75 @@ +using Aaru.Server.Database.Models; +using BlazorBootstrap; +using Microsoft.EntityFrameworkCore; +using DbContext = Aaru.Server.Database.DbContext; + +namespace Aaru.Server.Components.Admin.Pages.CompactDiscOffsets; + +public partial class View +{ + private int _deleteId; + private Modal? _deleteModal; + bool _initialized; + List _items; + + /// + protected override async Task OnInitializedAsync() + { + await base.OnInitializedAsync(); + + StateHasChanged(); + + await using DbContext ctx = await DbContextFactory.CreateDbContextAsync(); + + _items = await ctx.CdOffsets.OrderBy(static o => o.Manufacturer) + .ThenBy(static o => o.Model) + .ThenBy(static o => o.Offset) + .ToListAsync(); + + _initialized = true; + + StateHasChanged(); + } + + private async Task ShowDeleteModal(int id) + { + _deleteId = id; + if(_deleteModal != null) await _deleteModal.ShowAsync(); + } + + private async Task HideDeleteModal() + { + if(_deleteModal != null) await _deleteModal.HideAsync(); + } + + private async Task ConfirmDelete() + { + await DeleteAsync(_deleteId); + await HideDeleteModal(); + await RefreshItemsAsync(); + } + + private async Task DeleteAsync(int id) + { + await using DbContext ctx = await DbContextFactory.CreateDbContextAsync(); + CompactDiscOffset? offset = await ctx.CdOffsets.FindAsync(id); + + if(offset is not null) + { + ctx.CdOffsets.Remove(offset); + await ctx.SaveChangesAsync(); + } + } + + private async Task RefreshItemsAsync() + { + await using DbContext ctx = await DbContextFactory.CreateDbContextAsync(); + + _items = await ctx.CdOffsets.OrderBy(static o => o.Manufacturer) + .ThenBy(static o => o.Model) + .ThenBy(static o => o.Offset) + .ToListAsync(); + + StateHasChanged(); + } +} \ No newline at end of file