diff --git a/EnvelopeGenerator.API/Models/BlazorSignaturePayload.cs b/EnvelopeGenerator.API/Models/BlazorSignaturePayload.cs new file mode 100644 index 00000000..3bc0b0c2 --- /dev/null +++ b/EnvelopeGenerator.API/Models/BlazorSignaturePayload.cs @@ -0,0 +1,42 @@ +namespace EnvelopeGenerator.API.Models; + +/// +/// Lightweight payload used by the Blazor receiver UI to submit signatures. +/// Each entry corresponds to one signature placeholder rendered as an +/// overlay on top of the DevExpress PDF viewer. +/// +/// The legacy MVC flow ships a full PSPDFKit InstantJSON payload via +/// . +/// That format is browser-library specific. The Blazor client uses a +/// transport-neutral DTO instead: only what the server actually needs +/// to persist the signed document (image + metadata per placeholder). +/// +/// Conversion to the internal PsPdfKitAnnotation happens inside +/// . +/// +public class BlazorSignaturePayload +{ + /// The receiver-specific signed placeholders for this envelope. + public List Signatures { get; set; } = new(); +} + +/// +/// A single signed placeholder. +/// +public class BlazorSignatureEntry +{ + /// The receiver's DocumentReceiverElement.Id being signed. + public int ElementId { get; set; } + + /// Signature image as a data URL (e.g. "data:image/png;base64,..."). + public string SignatureDataUrl { get; set; } = string.Empty; + + /// Optional position / job title entered by the receiver. + public string? Position { get; set; } + + /// Optional city / location entered by the receiver. + public string? City { get; set; } + + /// Capture timestamp (client local time). + public DateTime SignedAt { get; set; } +}