From de134f46b94a4fe982a57217043e11dfd2b87976 Mon Sep 17 00:00:00 2001 From: Natalia Portillo Date: Sun, 5 May 2024 04:04:32 +0100 Subject: [PATCH] Add device report view. --- Aaru.Server.Database/Models/Device.cs | 2 +- .../Components/Pages/Report/View.razor | 26 ++++++++++ .../Components/Pages/Report/View.razor.cs | 52 +++++++++++++++++++ 3 files changed, 79 insertions(+), 1 deletion(-) create mode 100644 Aaru.Server.New/Components/Pages/Report/View.razor create mode 100644 Aaru.Server.New/Components/Pages/Report/View.razor.cs diff --git a/Aaru.Server.Database/Models/Device.cs b/Aaru.Server.Database/Models/Device.cs index 7718a014..6dd63785 100644 --- a/Aaru.Server.Database/Models/Device.cs +++ b/Aaru.Server.Database/Models/Device.cs @@ -88,7 +88,7 @@ public class Device : DeviceReportV2 [DisplayName("Modified when")] public DateTime? ModifiedWhen { get; set; } - public virtual CompactDiscOffset CdOffset { get; set; } + public virtual CompactDiscOffset? CdOffset { get; set; } [DefaultValue(0)] [DisplayName("Optimal no. of sectors to be read at once")] diff --git a/Aaru.Server.New/Components/Pages/Report/View.razor b/Aaru.Server.New/Components/Pages/Report/View.razor new file mode 100644 index 00000000..0368e7f8 --- /dev/null +++ b/Aaru.Server.New/Components/Pages/Report/View.razor @@ -0,0 +1,26 @@ +@page "/Report/View/{Id:int}" +@using Aaru.Server.Database + +@inject Microsoft.EntityFrameworkCore.IDbContextFactory DbContextFactory + +@_pageTitle +@if(_notFound) +{ +
+

The requested device report has not been found...

+
+ + return; +} +@if(!_initialized) +{ +
+

Loading...

+
+ + return; +} + +
+

@_pageTitle

+
\ No newline at end of file diff --git a/Aaru.Server.New/Components/Pages/Report/View.razor.cs b/Aaru.Server.New/Components/Pages/Report/View.razor.cs new file mode 100644 index 00000000..391be749 --- /dev/null +++ b/Aaru.Server.New/Components/Pages/Report/View.razor.cs @@ -0,0 +1,52 @@ +using Aaru.Server.Database.Models; +using Microsoft.AspNetCore.Components; +using Microsoft.EntityFrameworkCore; +using DbContext = Aaru.Server.Database.DbContext; + +namespace Aaru.Server.New.Components.Pages.Report; + +public partial class View +{ + bool _initialized; + bool _notFound; + string _pageTitle { get; set; } = "Aaru Device Report"; + [CascadingParameter] + HttpContext HttpContext { get; set; } = default!; + + [Parameter] + public int Id { get; set; } + + /// + protected override async Task OnInitializedAsync() + { + await base.OnInitializedAsync(); + + if(Id <= 0) + { + _notFound = true; + HttpContext.Response.StatusCode = StatusCodes.Status404NotFound; + + return; + } + + StateHasChanged(); + + await using DbContext ctx = await DbContextFactory.CreateDbContextAsync(); + + Device? report = await ctx.Devices.FirstOrDefaultAsync(d => d.Id == Id); + + if(report is null) + { + _notFound = true; + HttpContext.Response.StatusCode = StatusCodes.Status404NotFound; + + return; + } + + _pageTitle = $"Aaru Device Report for {report.Manufacturer} {report.Model} {report.Revision}"; + + _initialized = true; + + StateHasChanged(); + } +} \ No newline at end of file