DRAB/Drab.Logic/Services/OrderPdfGenerator.cs
2025-07-11 10:50:46 +02:00

38 lines
1.5 KiB
C#

using System.Reflection;
using FastReport;
using FastReport.Export.PdfSimple;
namespace Drab.Logic.Services;
internal class OrderPdfGenerator(ILogger<OrderPdfGenerator> logger) : IOrderPdfGenerator
{
public Task<string> GenerateOrder(DokDto order)
{
logger.LogInformation("Generate pdf document: {OrderNo}", order.NrDok);
var cleanFilename = order.NrDok.Replace('/', '-');
var orderFilename = $"Zam_{cleanFilename}_{order.Data:yyyy-MM-dd}_{order.Sklep}_{order.DokId}.pdf";
var templatePath = Path.Combine(Constants.ReportsTemplatesPath, "Order.frx");
var outputFile = Path.Combine(Constants.ReportsOutputPath, orderFilename);
var version = Assembly.GetEntryAssembly().GetCustomAttribute<AssemblyInformationalVersionAttribute>().InformationalVersion;
var generatedAt = $"{DateTime.Now:yyyy-MM-dd HH:mm:ss}";
var data = new[] { order };
try
{
var report = new Report();
report.Load(templatePath);
report.SetParameterValue("generatedAt", generatedAt);
report.SetParameterValue("version", version);
report.RegisterData(data, "Order");
report.Prepare();
var pdfExport = new PDFSimpleExport();
pdfExport.Export(report, outputFile);
return Task.FromResult(orderFilename);
}
catch (Exception e)
{
logger.LogError(e, "Error on generating order document: {OrderNo}", order.NrDok);
return Task.FromResult(string.Empty);
}
}
}