phronCare/Documents/Services/DocumentTemplateService.cs

44 lines
1.4 KiB
C#
Raw Normal View History

2025-05-15 19:24:12 -03:00
using Documents.Interfaces;
using Documents.Models;
2025-05-16 19:20:31 -03:00
using Domain.Dtos;
2025-05-15 19:24:12 -03:00
using Transversal.Interfaces;
2025-05-16 19:20:31 -03:00
public class DocumentTemplateService : IDocumentTemplateService
2025-05-15 19:24:12 -03:00
{
2025-05-16 19:20:31 -03:00
private readonly ITemplateRenderer _templateRenderer;
private readonly IPdfGeneratorService _pdfGeneratorService;
public DocumentTemplateService(ITemplateRenderer templateRenderer, IPdfGeneratorService pdfGeneratorService)
2025-05-15 19:24:12 -03:00
{
2025-05-16 19:20:31 -03:00
_templateRenderer = templateRenderer;
_pdfGeneratorService = pdfGeneratorService;
}
2025-05-15 19:24:12 -03:00
2025-05-16 19:20:31 -03:00
public async Task<byte[]> GenerateDocumentAsync(DocumentGenerationRequest request)
{
2025-07-15 16:51:29 -03:00
//REFACTORIZAR PARA GENERAR DOCUMENTOS DE DIFERENTES TIPOS!!
2025-05-16 19:20:31 -03:00
// Leer logo
var logoPath = Path.Combine(Directory.GetCurrentDirectory(), "Resources", "logo.png");
var logoBase64 = GetImageBase64(logoPath);
2025-05-15 19:24:12 -03:00
2025-05-16 19:20:31 -03:00
// Inyectar al modelo si corresponde
if (request.Model is QuoteDto quote)
2025-05-15 19:24:12 -03:00
{
2025-05-16 19:20:31 -03:00
quote.LogoBase64 = logoBase64;
2025-05-15 19:24:12 -03:00
}
2025-05-16 19:20:31 -03:00
string html = await _templateRenderer.RenderAsync("Quotes/Template_v1.cshtml", request.Model);
return await _pdfGeneratorService.GeneratePdfFromHtmlAsync(html);
}
private static string GetImageBase64(string imagePath)
{
if (!File.Exists(imagePath))
return "";
byte[] imageBytes = File.ReadAllBytes(imagePath);
return Convert.ToBase64String(imageBytes);
2025-05-15 19:24:12 -03:00
}
}