From 05aa480f27d216190f500247e498f074d9278a58 Mon Sep 17 00:00:00 2001 From: Leandro Hernan Rojas Date: Fri, 16 May 2025 20:57:57 -0300 Subject: [PATCH] Update UI. GeneratePDF --- .../Pages/Sales/Quotes/Quotes.razor | 11 ++++++-- .../Services/Sales/Quotes/QuoteService.cs | 28 +++++++++++++++++++ 2 files changed, 37 insertions(+), 2 deletions(-) diff --git a/phronCare.UIBlazor/Pages/Sales/Quotes/Quotes.razor b/phronCare.UIBlazor/Pages/Sales/Quotes/Quotes.razor index 28cc416..7532ddd 100644 --- a/phronCare.UIBlazor/Pages/Sales/Quotes/Quotes.razor +++ b/phronCare.UIBlazor/Pages/Sales/Quotes/Quotes.razor @@ -378,8 +378,15 @@ _ => "bg-light text-dark" }; - private void PrintPdf(int quoteId) + private async void PrintPdf(int quoteId) { - // lógica de impresión... + try + { + await quoteService.ExportPdfAsync(quoteId); + } + catch (Exception ex) + { + toastService.ShowError(ex.Message); + } } } diff --git a/phronCare.UIBlazor/Services/Sales/Quotes/QuoteService.cs b/phronCare.UIBlazor/Services/Sales/Quotes/QuoteService.cs index cdd8788..077cb80 100644 --- a/phronCare.UIBlazor/Services/Sales/Quotes/QuoteService.cs +++ b/phronCare.UIBlazor/Services/Sales/Quotes/QuoteService.cs @@ -92,6 +92,34 @@ namespace phronCare.UIBlazor.Services.Sales.Quotes var result = await _http.GetFromJsonAsync>(url); return result!; } + /// + /// Obtiene el PDF del presupuesto por ID como array de bytes. + /// + public async Task ExportPdfAsync(int quoteId) + { + try + { + var response = await _http.GetAsync($"/api/quote/{quoteId}/pdf"); + + if (!response.IsSuccessStatusCode) + { + var error = await response.Content.ReadAsStringAsync(); + throw new Exception($"Error al generar PDF: {error}"); + } + + var bytes = await response.Content.ReadAsByteArrayAsync(); + var base64 = Convert.ToBase64String(bytes); + var fileName = $"Presupuesto_{quoteId}.pdf"; + + await _js.InvokeVoidAsync("saveAsFile", fileName, base64); + } + catch (Exception ex) + { + var message = ex.Message ?? "No message"; + throw new Exception($"ExportPdfAsync: {message}", ex); + } + } + } public class CreateQuoteResult