diff --git a/EnvelopeGenerator.Server/EnvelopeGenerator.Server.Client/Pages/SenderPage.razor b/EnvelopeGenerator.Server/EnvelopeGenerator.Server.Client/Pages/SenderPage.razor index 2b5a2184..04f5d0e7 100644 --- a/EnvelopeGenerator.Server/EnvelopeGenerator.Server.Client/Pages/SenderPage.razor +++ b/EnvelopeGenerator.Server/EnvelopeGenerator.Server.Client/Pages/SenderPage.razor @@ -19,6 +19,7 @@ @inject EnvelopeGenerator.Server.Client.Services.ThemeService ThemeService @inject EnvelopeGenerator.Server.Client.Services.UserPreferencesService UserPreferencesService @inject EnvelopeGenerator.Server.Client.Services.CustomImagesService CustomImagesService +@inject EnvelopeGenerator.Server.Client.Services.PdfSignatureService PdfSignatureService @inject EnvelopeGenerator.Server.Client.Services.CreateEnvelopeBootstrapStorageService CreateEnvelopeBootstrapStorageService @inject ILogger Logger @inject NavigationManager Navigation @@ -424,7 +425,7 @@ @* ── PDF Vorschau Popup ────────────────────────────────────────────────── *@ (); // Logo configuration (loaded once after login, in-memory cached) builder.Services.AddScoped(); +builder.Services.AddScoped(); // DevExpress WASM builder.Services.AddDevExpressWebAssemblyBlazorPdfViewer(); diff --git a/EnvelopeGenerator.Server/EnvelopeGenerator.Server.Client/Services/PdfSignatureService.cs b/EnvelopeGenerator.Server/EnvelopeGenerator.Server.Client/Services/PdfSignatureService.cs new file mode 100644 index 00000000..99a1f868 --- /dev/null +++ b/EnvelopeGenerator.Server/EnvelopeGenerator.Server.Client/Services/PdfSignatureService.cs @@ -0,0 +1,24 @@ +using System.Net; +using System.Net.Http.Json; + +namespace EnvelopeGenerator.Server.Client.Services; + +public class PdfSignatureService(IHttpClientFactory httpClientFactory) +{ + /// + /// Calls POST /api/PdfSignature with the envelope id and returns the fully signed PDF bytes. + /// + public async Task GetSignedPdfAsync(int envelopeId, CancellationToken cancel = default) + { + using var http = httpClientFactory.CreateClient("EnvelopeGenerator.Server"); + var response = await http.PostAsJsonAsync("/api/PdfSignature", new { Id = envelopeId }, cancel); + + if (!response.IsSuccessStatusCode) + throw new HttpRequestException( + $"Failed to load signed PDF. Status: {(int)response.StatusCode} ({response.ReasonPhrase ?? "Unknown"})", + null, + response.StatusCode); + + return await response.Content.ReadAsByteArrayAsync(cancel); + } +} diff --git a/EnvelopeGenerator.Server/EnvelopeGenerator.Server/Program.cs b/EnvelopeGenerator.Server/EnvelopeGenerator.Server/Program.cs index cbacf25f..66212b58 100644 --- a/EnvelopeGenerator.Server/EnvelopeGenerator.Server/Program.cs +++ b/EnvelopeGenerator.Server/EnvelopeGenerator.Server/Program.cs @@ -344,6 +344,7 @@ try builder.Services.AddScoped(); builder.Services.AddScoped(); builder.Services.AddScoped(); + builder.Services.AddScoped(); builder.Services.AddScoped(); builder.Services.AddScoped(); builder.Services.AddScoped();