From bd6a43c3fa9fe235b6ae235e63158519d300b757 Mon Sep 17 00:00:00 2001 From: Natalia Portillo Date: Fri, 12 Sep 2025 17:55:51 +0100 Subject: [PATCH] Add edit view for tested media with form validation --- .../Admin/Pages/TestedMedia/Edit.razor | 53 ++++++++++++ .../Admin/Pages/TestedMedia/Edit.razor.cs | 86 +++++++++++++++++++ 2 files changed, 139 insertions(+) create mode 100644 Aaru.Server/Components/Admin/Pages/TestedMedia/Edit.razor create mode 100644 Aaru.Server/Components/Admin/Pages/TestedMedia/Edit.razor.cs diff --git a/Aaru.Server/Components/Admin/Pages/TestedMedia/Edit.razor b/Aaru.Server/Components/Admin/Pages/TestedMedia/Edit.razor new file mode 100644 index 00000000..e45f8523 --- /dev/null +++ b/Aaru.Server/Components/Admin/Pages/TestedMedia/Edit.razor @@ -0,0 +1,53 @@ +@page "/admin/tested-media/edit/{Id:int}" +@attribute [Authorize] +@layout AdminLayout + +Edit Tested Media + +@if(!isLoaded) +{ +
Loading...
+} +else +{ + + + +
+ + + +
+
+ + + +
+
+ + + +
+
+ + +
+
+ + + +
+
+ + + +
+
+ + + +
+ + +
+} diff --git a/Aaru.Server/Components/Admin/Pages/TestedMedia/Edit.razor.cs b/Aaru.Server/Components/Admin/Pages/TestedMedia/Edit.razor.cs new file mode 100644 index 00000000..6acf9a9f --- /dev/null +++ b/Aaru.Server/Components/Admin/Pages/TestedMedia/Edit.razor.cs @@ -0,0 +1,86 @@ +using System.ComponentModel.DataAnnotations; +using Microsoft.AspNetCore.Components; +using Microsoft.EntityFrameworkCore; +using DbContext = Aaru.Server.Database.DbContext; + +namespace Aaru.Server.Components.Admin.Pages.TestedMedia; + +public partial class Edit : ComponentBase +{ + DbContext db; + bool isLoaded; + + TestedMediaViewModel testedMedia = new(); + [Parameter] + public int Id { get; set; } + + [Inject] + public IDbContextFactory DbContextFactory { get; set; } + + [Inject] + public NavigationManager Navigation { get; set; } + + protected override async Task OnInitializedAsync() + { + db = await DbContextFactory.CreateDbContextAsync(); + CommonTypes.Metadata.TestedMedia? entity = await db.TestedMedia.FindAsync(Id); + + if(entity != null) + { + testedMedia = new TestedMediaViewModel + { + Id = Id, + Manufacturer = entity.Manufacturer, + Model = entity.Model, + MediumTypeName = entity.MediumTypeName, + MediaIsRecognized = entity.MediaIsRecognized, + Blocks = entity.Blocks, + BlockSize = entity.BlockSize, + LongBlockSize = entity.LongBlockSize + }; + } + + isLoaded = true; + } + + protected async Task HandleValidSubmit() + { + CommonTypes.Metadata.TestedMedia? entity = await db.TestedMedia.FindAsync(Id); + + if(entity != null) + { + entity.Manufacturer = testedMedia.Manufacturer; + entity.Model = testedMedia.Model; + entity.MediumTypeName = testedMedia.MediumTypeName; + entity.MediaIsRecognized = testedMedia.MediaIsRecognized; + entity.Blocks = testedMedia.Blocks; + entity.BlockSize = testedMedia.BlockSize; + entity.LongBlockSize = testedMedia.LongBlockSize; + await db.SaveChangesAsync(); + } + + Navigation.NavigateTo("/admin/tested-media"); + } + + protected void GoBack() + { + Navigation.NavigateTo("/admin/tested-media"); + } + + public class TestedMediaViewModel + { + public int Id { get; set; } + [Required] + public string Manufacturer { get; set; } + [Required] + public string Model { get; set; } + public string MediumTypeName { get; set; } + public bool MediaIsRecognized { get; set; } + [Range(0, long.MaxValue)] + public ulong? Blocks { get; set; } + [Range(0, int.MaxValue)] + public uint? BlockSize { get; set; } + [Range(0, int.MaxValue)] + public uint? LongBlockSize { get; set; } + } +} \ No newline at end of file