From 62c9260db12bd0efe572eff24dec034a2d82b902 Mon Sep 17 00:00:00 2001 From: Natalia Portillo Date: Sat, 13 Sep 2025 02:38:34 +0100 Subject: [PATCH] Add edit device page with form for updating device details --- .../Components/Admin/Pages/Devices/Edit.razor | 64 ++++++++++++++ .../Admin/Pages/Devices/Edit.razor.cs | 84 +++++++++++++++++++ 2 files changed, 148 insertions(+) create mode 100644 Aaru.Server/Components/Admin/Pages/Devices/Edit.razor create mode 100644 Aaru.Server/Components/Admin/Pages/Devices/Edit.razor.cs diff --git a/Aaru.Server/Components/Admin/Pages/Devices/Edit.razor b/Aaru.Server/Components/Admin/Pages/Devices/Edit.razor new file mode 100644 index 00000000..0083bbec --- /dev/null +++ b/Aaru.Server/Components/Admin/Pages/Devices/Edit.razor @@ -0,0 +1,64 @@ +@page "/admin/devices/edit/{Id:int}" +@using Aaru.CommonTypes.Enums +@attribute [Authorize] +@layout AdminLayout + +@inject Microsoft.EntityFrameworkCore.IDbContextFactory DbContextFactory + +Edit Device + +@if(!isLoaded) +{ +
Loading...
+} +else if(device == null) +{ +
Device not found.
+} +else +{ + + + +
+ + + +
+
+ + + +
+
+ + + +
+
+ + +
+
+ + + +
+
+ + +
+
+ + + @foreach(object? type in Enum.GetValues(typeof(DeviceType))) + { + + } + + +
+ + +
+} diff --git a/Aaru.Server/Components/Admin/Pages/Devices/Edit.razor.cs b/Aaru.Server/Components/Admin/Pages/Devices/Edit.razor.cs new file mode 100644 index 00000000..fad4e3f1 --- /dev/null +++ b/Aaru.Server/Components/Admin/Pages/Devices/Edit.razor.cs @@ -0,0 +1,84 @@ +using System.ComponentModel.DataAnnotations; +using Aaru.CommonTypes.Enums; +using Aaru.Server.Database.Models; +using Microsoft.AspNetCore.Components; +using DbContext = Aaru.Server.Database.DbContext; + +namespace Aaru.Server.Components.Admin.Pages.Devices; + +public partial class Edit +{ + DbContext db; + + DeviceEditViewModel device; + bool isLoaded; + [Parameter] + public int Id { get; set; } + + [Inject] + public NavigationManager Navigation { get; set; } + + protected override async Task OnInitializedAsync() + { + db = DbContextFactory.CreateDbContext(); + Device? entity = await db.Devices.FindAsync(Id); + + if(entity != null) + { + device = new DeviceEditViewModel + { + Id = entity.Id, + Manufacturer = entity.Manufacturer, + Model = entity.Model, + Revision = entity.Revision, + CompactFlash = entity.CompactFlash, + OptimalMultipleSectorsRead = entity.OptimalMultipleSectorsRead, + CanReadGdRomUsingSwapDisc = entity.CanReadGdRomUsingSwapDisc ?? false, + Type = entity.Type + }; + } + + isLoaded = true; + } + + protected async Task HandleValidSubmit() + { + Device? entity = await db.Devices.FindAsync(Id); + + if(entity != null) + { + entity.Manufacturer = device.Manufacturer; + entity.Model = device.Model; + entity.Revision = device.Revision; + entity.CompactFlash = device.CompactFlash; + entity.OptimalMultipleSectorsRead = device.OptimalMultipleSectorsRead; + entity.CanReadGdRomUsingSwapDisc = device.CanReadGdRomUsingSwapDisc; + entity.Type = device.Type; + entity.ModifiedWhen = DateTime.UtcNow; + await db.SaveChangesAsync(); + } + + Navigation.NavigateTo("/admin/devices"); + } + + protected void GoBack() + { + Navigation.NavigateTo("/admin/devices"); + } + + public class DeviceEditViewModel + { + public int Id { get; set; } + [Required] + public string Manufacturer { get; set; } + [Required] + public string Model { get; set; } + public string Revision { get; set; } + public bool CompactFlash { get; set; } + [Range(0, int.MaxValue)] + public int OptimalMultipleSectorsRead { get; set; } + public bool CanReadGdRomUsingSwapDisc { get; set; } + [Required] + public DeviceType Type { get; set; } + } +} \ No newline at end of file