38 lines
1.5 KiB
C#
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);
|
|
}
|
|
}
|
|
} |