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
|
|
|
|
}
|
|
|
|
|
|
}
|