diff --git a/Aaru.Server/Components/Admin/AdminNavMenu.razor b/Aaru.Server/Components/Admin/AdminNavMenu.razor index 51f5ca97..6a64193f 100644 --- a/Aaru.Server/Components/Admin/AdminNavMenu.razor +++ b/Aaru.Server/Components/Admin/AdminNavMenu.razor @@ -68,6 +68,9 @@ Supported densities + + Tested media + Tested sequential media diff --git a/Aaru.Server/Components/Admin/Pages/TestedMedia/List.razor b/Aaru.Server/Components/Admin/Pages/TestedMedia/List.razor new file mode 100644 index 00000000..0886b425 --- /dev/null +++ b/Aaru.Server/Components/Admin/Pages/TestedMedia/List.razor @@ -0,0 +1,99 @@ +@page "/admin/tested-media" +@attribute [Authorize] +@layout AdminLayout + +@inject Microsoft.EntityFrameworkCore.IDbContextFactory DbContextFactory + +Tested media + +@if(!_initialized) +{ +
+

Loading...

+
+ + return; +} + +
+

Tested media

+ + + + + + + + + + + + + + + @foreach(TestedMedia item in _items) + { + + + + + + + + + + + } + +
+ @DisplayNameHelper.GetDisplayName(typeof(TestedMedia), nameof(TestedMedia.Manufacturer)) + + @DisplayNameHelper.GetDisplayName(typeof(TestedMedia), nameof(TestedMedia.Model)) + + @DisplayNameHelper.GetDisplayName(typeof(TestedMedia), nameof(TestedMedia.MediumTypeName)) + + @DisplayNameHelper.GetDisplayName(typeof(TestedMedia), nameof(TestedMedia.MediaIsRecognized)) + + @DisplayNameHelper.GetDisplayName(typeof(TestedMedia), nameof(TestedMedia.Blocks)) + + @DisplayNameHelper.GetDisplayName(typeof(TestedMedia), nameof(TestedMedia.BlockSize)) + + @DisplayNameHelper.GetDisplayName(typeof(TestedMedia), nameof(TestedMedia.LongBlockSize)) + + Actions +
+ @item.Manufacturer + + @item.Model + + @item.MediumTypeName + + @item.MediaIsRecognized + + @item.Blocks + + @item.BlockSize + + @item.LongBlockSize + + + Details + + + Edit + + +
+
+ + + +
Are you sure you want to delete this tested media?
+
+ + + + +
\ No newline at end of file diff --git a/Aaru.Server/Components/Admin/Pages/TestedMedia/List.razor.cs b/Aaru.Server/Components/Admin/Pages/TestedMedia/List.razor.cs new file mode 100644 index 00000000..32317e64 --- /dev/null +++ b/Aaru.Server/Components/Admin/Pages/TestedMedia/List.razor.cs @@ -0,0 +1,72 @@ +using BlazorBootstrap; +using Microsoft.EntityFrameworkCore; +using DbContext = Aaru.Server.Database.DbContext; + +namespace Aaru.Server.Components.Admin.Pages.TestedMedia; + +public partial class List +{ + private int _deleteId; + private Modal? _deleteModal; + bool _initialized; + List _items; + + + /// + protected override async Task OnInitializedAsync() + { + await base.OnInitializedAsync(); + + StateHasChanged(); + + await RefreshItemsAsync(); + + _initialized = true; + + StateHasChanged(); + } + + async Task RefreshItemsAsync() + { + await using DbContext ctx = await DbContextFactory.CreateDbContextAsync(); + + _items = await ctx.TestedMedia.OrderBy(static m => m.Manufacturer) + .ThenBy(static m => m.Model) + .ThenBy(static m => m.MediumTypeName) + .ThenBy(static m => m.MediaIsRecognized) + .ThenBy(static m => m.LongBlockSize) + .ThenBy(static m => m.BlockSize) + .ThenBy(static m => m.Blocks) + .ToListAsync(); + } + + 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(); + CommonTypes.Metadata.TestedMedia? media = await ctx.TestedMedia.FindAsync(id); + + if(media is not null) + { + ctx.TestedMedia.Remove(media); + await ctx.SaveChangesAsync(); + } + } +} \ No newline at end of file