feat(AddReportBehavior): add PDF report generation logic with logging
- Introduced `ILogger<AddReportBehavior>` for logging support. - Added `DoCreateReport` method to generate PDF from `EnvelopeReport` items. - Added `ReportSource` class to structure report data. - Retained existing history creation and MediatR pipeline behavior.
This commit is contained in:
parent
292b6b2ccf
commit
9c4766518e
@ -4,6 +4,7 @@ using EnvelopeGenerator.Domain.Constants;
|
|||||||
using EnvelopeGenerator.Application.EnvelopeReports;
|
using EnvelopeGenerator.Application.EnvelopeReports;
|
||||||
using EnvelopeGenerator.Application.Exceptions;
|
using EnvelopeGenerator.Application.Exceptions;
|
||||||
using EnvelopeGenerator.Domain.Entities;
|
using EnvelopeGenerator.Domain.Entities;
|
||||||
|
using Microsoft.Extensions.Logging;
|
||||||
|
|
||||||
namespace EnvelopeGenerator.Application.Pdf.Behaviors;
|
namespace EnvelopeGenerator.Application.Pdf.Behaviors;
|
||||||
|
|
||||||
@ -14,13 +15,17 @@ public class AddReportBehavior : IPipelineBehavior<BurnPdfCommand, byte[]>
|
|||||||
{
|
{
|
||||||
private readonly ISender _sender;
|
private readonly ISender _sender;
|
||||||
|
|
||||||
|
private readonly ILogger<AddReportBehavior> _logger;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
///
|
///
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="sender"></param>
|
/// <param name="sender"></param>
|
||||||
public AddReportBehavior(ISender sender)
|
/// <param name="logger"></param>
|
||||||
|
public AddReportBehavior(ISender sender, ILogger<AddReportBehavior> logger)
|
||||||
{
|
{
|
||||||
_sender = sender;
|
_sender = sender;
|
||||||
|
_logger = logger;
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
@ -68,4 +73,35 @@ public class AddReportBehavior : IPipelineBehavior<BurnPdfCommand, byte[]>
|
|||||||
|
|
||||||
return oBuffer;
|
return oBuffer;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private byte[] DoCreateReport(IEnumerable<EnvelopeReport> oItems)
|
||||||
|
{
|
||||||
|
var oSource = new ReportSource { Items = oItems };
|
||||||
|
var oReport = new rptEnvelopeHistory
|
||||||
|
{
|
||||||
|
DataSource = oSource,
|
||||||
|
DataMember = "Items"
|
||||||
|
};
|
||||||
|
|
||||||
|
// Creating report in memory
|
||||||
|
oReport.CreateDocument();
|
||||||
|
|
||||||
|
// Exporting report to stream
|
||||||
|
using var oStream = new MemoryStream();
|
||||||
|
oReport.ExportToPdf(oStream);
|
||||||
|
|
||||||
|
// Writing report to buffer
|
||||||
|
return oStream.ToArray();
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
///
|
||||||
|
/// </summary>
|
||||||
|
public class ReportSource
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
///
|
||||||
|
/// </summary>
|
||||||
|
public required IEnumerable<EnvelopeReport> Items { get; init; }
|
||||||
|
}
|
||||||
}
|
}
|
||||||
Loading…
x
Reference in New Issue
Block a user