using MediatR; using EnvelopeGenerator.Application.Histories.Commands; using EnvelopeGenerator.Domain.Constants; using EnvelopeGenerator.Application.EnvelopeReports; using EnvelopeGenerator.Application.Exceptions; using EnvelopeGenerator.Domain.Entities; namespace EnvelopeGenerator.Application.Pdf.Behaviors; /// /// /// public class AddReportBehavior : IPipelineBehavior { private readonly ISender _sender; /// /// /// /// public AddReportBehavior(ISender sender) { _sender = sender; } /// /// /// /// /// /// /// public async Task Handle(BurnPdfCommand request, RequestHandlerDelegate next, CancellationToken cancel) { var docResult = await next(cancel); var base64 = Convert.ToBase64String(docResult); if (!request.Debug) await _sender.Send(new CreateHistoryCommand() { EnvelopeId = request.EnvelopeId, UserReference = "System", Status = EnvelopeStatus.EnvelopeReportCreated, }, cancel); docResult = await CreateReport(request.Envelope!, cancel); return docResult; } /// /// /// /// /// /// /// public async Task CreateReport(Envelope envelope, CancellationToken cancel) { var oItems = await _sender.ReadEnvelopeReportAsync(envelope.Id, cancel: cancel); if (!oItems.Any()) { throw new CreateReportException("No report data found!"); } var oBuffer = DoCreateReport(oItems); return oBuffer; } }