From 462083fef1b8e5ff8b52de7332f43099e05e0105 Mon Sep 17 00:00:00 2001 From: Natalia Portillo Date: Fri, 12 Sep 2025 13:07:29 +0100 Subject: [PATCH] Add edit view for Compact Disc Offset with form validation --- .../Admin/Pages/CompactDiscOffsets/Edit.razor | 56 ++++++++++++ .../Pages/CompactDiscOffsets/Edit.razor.cs | 89 +++++++++++++++++++ 2 files changed, 145 insertions(+) create mode 100644 Aaru.Server/Components/Admin/Pages/CompactDiscOffsets/Edit.razor create mode 100644 Aaru.Server/Components/Admin/Pages/CompactDiscOffsets/Edit.razor.cs diff --git a/Aaru.Server/Components/Admin/Pages/CompactDiscOffsets/Edit.razor b/Aaru.Server/Components/Admin/Pages/CompactDiscOffsets/Edit.razor new file mode 100644 index 00000000..5ec23edb --- /dev/null +++ b/Aaru.Server/Components/Admin/Pages/CompactDiscOffsets/Edit.razor @@ -0,0 +1,56 @@ +@page "/admin/cd-offsets/edit/{Id:int}" +@attribute [Authorize] +@layout AdminLayout +@rendermode InteractiveServer + +@inject Microsoft.EntityFrameworkCore.IDbContextFactory DbContextFactory + +Edit Compact Disc Offset + +@if(_notFound) +{ +
Offset not found.
+} +else +{ + + + +
+ + + +
+
+ + + +
+
+ + + +
+
+ + + +
+
+ + + +
+ + Cancel +
+} + +@if(_success) +{ +
Offset saved successfully.
+} +@if(_error) +{ +
Error saving offset.
+} diff --git a/Aaru.Server/Components/Admin/Pages/CompactDiscOffsets/Edit.razor.cs b/Aaru.Server/Components/Admin/Pages/CompactDiscOffsets/Edit.razor.cs new file mode 100644 index 00000000..11ae2658 --- /dev/null +++ b/Aaru.Server/Components/Admin/Pages/CompactDiscOffsets/Edit.razor.cs @@ -0,0 +1,89 @@ +using System.ComponentModel.DataAnnotations; +using Aaru.Server.Database.Models; +using Microsoft.AspNetCore.Components; +using DbContext = Aaru.Server.Database.DbContext; + +namespace Aaru.Server.Components.Admin.Pages.CompactDiscOffsets; + +public partial class Edit : ComponentBase +{ + private bool _error; + private OffsetEditModel _model = new(); + private bool _notFound; + private bool _success; + [Parameter] + public int Id { get; set; } + + protected override async Task OnInitializedAsync() + { + await using DbContext ctx = await DbContextFactory.CreateDbContextAsync(); + CompactDiscOffset? entity = await ctx.CdOffsets.FindAsync(Id); + + if(entity != null) + { + _model = new OffsetEditModel + { + Id = entity.Id, + Manufacturer = entity.Manufacturer, + Model = entity.Model, + Offset = entity.Offset, + Submissions = entity.Submissions, + Agreement = entity.Agreement + }; + } + else + _notFound = true; + } + + private async Task HandleValidSubmit() + { + _success = false; + _error = false; + + try + { + await using DbContext ctx = await DbContextFactory.CreateDbContextAsync(); + CompactDiscOffset? entity = await ctx.CdOffsets.FindAsync(_model.Id); + + if(entity == null) + { + _error = true; + + return; + } + + entity.Manufacturer = _model.Manufacturer; + entity.Model = _model.Model; + entity.Offset = _model.Offset; + entity.Submissions = _model.Submissions; + entity.Agreement = _model.Agreement; + entity.ModifiedWhen = DateTime.UtcNow; + await ctx.SaveChangesAsync(); + _success = true; + } + catch + { + _error = true; + } + } + + public class OffsetEditModel + { + public int Id { get; set; } + [Required] + [StringLength(100)] + public string Manufacturer { get; set; } = string.Empty; + [Required] + [StringLength(100)] + public string Model { get; set; } = string.Empty; + [Required] + [Range(-10000, 10000)] + public short Offset { get; set; } + [Required] + [Range(0, int.MaxValue)] + public int Submissions { get; set; } + [Required] + [Range(0, 100)] + public float Agreement { get; set; } + } +} \ No newline at end of file