From dec2b81afe9a9208cd01ef3031aa476e30d8b83a Mon Sep 17 00:00:00 2001 From: TekH Date: Sat, 6 Jun 2026 19:14:42 +0200 Subject: [PATCH] Refactor to use SignatureDto and SignatureService Replaced AnnotationDto and AnnotationService with SignatureDto and SignatureService for handling signature data. Marked AnnotationDto and AnnotationService as obsolete. Added the SignatureDto class to represent signature data and introduced the SignatureService class to fetch signature data from the API. Updated EnvelopeViewer.razor to use SignatureService, replacing AnnotationService, and added a debug log for retrieved signatures. Performed general refactoring to align with the new signature data model and functionality. --- .../Models/AnnotationDto.cs | 1 + .../Models/SignatureDto.cs | 13 ++++++++++ .../Pages/EnvelopeViewer.razor | 6 +++-- .../Services/AnnotationService.cs | 1 + .../Services/SignatureService.cs | 24 +++++++++++++++++++ 5 files changed, 43 insertions(+), 2 deletions(-) create mode 100644 EnvelopeGenerator.ReceiverUI/Models/SignatureDto.cs create mode 100644 EnvelopeGenerator.ReceiverUI/Services/SignatureService.cs diff --git a/EnvelopeGenerator.ReceiverUI/Models/AnnotationDto.cs b/EnvelopeGenerator.ReceiverUI/Models/AnnotationDto.cs index fcc48e9b..f0172832 100644 --- a/EnvelopeGenerator.ReceiverUI/Models/AnnotationDto.cs +++ b/EnvelopeGenerator.ReceiverUI/Models/AnnotationDto.cs @@ -13,6 +13,7 @@ namespace EnvelopeGenerator.ReceiverUI.Models; /// Difference from GDPicture: GDPicture uses PDF points with bottom-left origin (PDF standard); Y is flipped. /// Convert: yDX = (pageHeightPt - yGD - elemHeightPt) * (100.0 / 72.0) /// +[Obsolete("Use SignatureDto with SignatureService.")] public record AnnotationDto { /// Unique identifier of the annotation. diff --git a/EnvelopeGenerator.ReceiverUI/Models/SignatureDto.cs b/EnvelopeGenerator.ReceiverUI/Models/SignatureDto.cs new file mode 100644 index 00000000..8c5acc35 --- /dev/null +++ b/EnvelopeGenerator.ReceiverUI/Models/SignatureDto.cs @@ -0,0 +1,13 @@ +namespace EnvelopeGenerator.ReceiverUI.Models; + +public class SignatureDto +{ + public int Id { get; set; } + + public double X { get; set; } + + public double Y { get; set; } + + public int Page { get; set; } + +} \ No newline at end of file diff --git a/EnvelopeGenerator.ReceiverUI/Pages/EnvelopeViewer.razor b/EnvelopeGenerator.ReceiverUI/Pages/EnvelopeViewer.razor index 80135751..66af967d 100644 --- a/EnvelopeGenerator.ReceiverUI/Pages/EnvelopeViewer.razor +++ b/EnvelopeGenerator.ReceiverUI/Pages/EnvelopeViewer.razor @@ -8,7 +8,7 @@ @inject IOptions AppOptions @inject IOptions PdfViewerOptions @inject IJSRuntime JSRuntime -@inject AnnotationService AnnotService +@inject SignatureService SignatureService @implements IAsyncDisposable @@ -212,7 +212,9 @@ protected override async Task OnInitializedAsync() { _errorMessage = $"Dokument konnte nicht geladen werden. HTTP Status: {statusCode}"; } - var annots = await AnnotService.GetAnnotationsAsync(EnvelopeKey); + var signatures = await SignatureService.GetAsync(EnvelopeKey); + + await JSRuntime.InvokeVoidAsync("console.log", signatures); } catch (Exception ex) { _errorMessage = $"Fehler: {ex.Message}"; diff --git a/EnvelopeGenerator.ReceiverUI/Services/AnnotationService.cs b/EnvelopeGenerator.ReceiverUI/Services/AnnotationService.cs index 5fde8210..ead7437c 100644 --- a/EnvelopeGenerator.ReceiverUI/Services/AnnotationService.cs +++ b/EnvelopeGenerator.ReceiverUI/Services/AnnotationService.cs @@ -14,6 +14,7 @@ namespace EnvelopeGenerator.ReceiverUI.Services; /// fake-data/annotations.json. To switch to real data, update the /// YARP route in yarp.json — no code change required. /// +[Obsolete("Use SignatureService.")] public class AnnotationService(HttpClient http, IOptions apiOptions) { private static readonly JsonSerializerOptions _jsonOptions = new(JsonSerializerDefaults.Web); diff --git a/EnvelopeGenerator.ReceiverUI/Services/SignatureService.cs b/EnvelopeGenerator.ReceiverUI/Services/SignatureService.cs new file mode 100644 index 00000000..0955ed5b --- /dev/null +++ b/EnvelopeGenerator.ReceiverUI/Services/SignatureService.cs @@ -0,0 +1,24 @@ +using System.Net.Http.Json; +using System.Text.Json; +using EnvelopeGenerator.ReceiverUI.Models; +using EnvelopeGenerator.ReceiverUI.Options; +using Microsoft.Extensions.Options; + +namespace EnvelopeGenerator.ReceiverUI.Services; + +public class SignatureService(HttpClient http, IOptions apiOptions) +{ + private static readonly JsonSerializerOptions _jsonOptions = new(JsonSerializerDefaults.Web); + + public async Task> GetAsync(string envelopeKey, CancellationToken cancel = default) + { + var url = $"{apiOptions.Value.BaseUrl}/api/Signature/{Uri.EscapeDataString(envelopeKey)}"; + var response = await http.GetAsync(url, cancel); + + if (!response.IsSuccessStatusCode) + throw new HttpRequestException($"Failed to retrieve signatures for envelope {envelopeKey}: {response.StatusCode} {response.ReasonPhrase}"); + + var result = await response.Content.ReadFromJsonAsync>(_jsonOptions, cancel); + return result ?? []; + } +}