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 ?? []; + } +}