From 40cc467b478bc6f19b268760d8c9fa24542606f8 Mon Sep 17 00:00:00 2001 From: TekH Date: Wed, 12 Nov 2025 15:12:04 +0100 Subject: [PATCH] feat(SendEmailBehavior): add SendEmailBehavior for sending final emails after PDF burn - Implements IPipelineBehavior to send emails to creator and receivers. - Logs debug information when sending emails and warnings if email sending is skipped. - Uses Envelope's FinalEmailType to determine whether to send emails. --- .../DependencyInjection.cs | 1 + .../Pdf/Behaviors/SendEmailBehavior.cs | 61 +++++++++++++++++++ 2 files changed, 62 insertions(+) create mode 100644 EnvelopeGenerator.Application/Pdf/Behaviors/SendEmailBehavior.cs diff --git a/EnvelopeGenerator.Application/DependencyInjection.cs b/EnvelopeGenerator.Application/DependencyInjection.cs index 368e5a1b..158915f9 100644 --- a/EnvelopeGenerator.Application/DependencyInjection.cs +++ b/EnvelopeGenerator.Application/DependencyInjection.cs @@ -91,6 +91,7 @@ public static class DependencyInjection cfg.AddBehavior(); cfg.AddBehavior(); #if WINDOWS + cfg.AddBehavior(); cfg.AddBehavior(); cfg.AddBehavior(); cfg.AddBehavior(); diff --git a/EnvelopeGenerator.Application/Pdf/Behaviors/SendEmailBehavior.cs b/EnvelopeGenerator.Application/Pdf/Behaviors/SendEmailBehavior.cs new file mode 100644 index 00000000..9d0e0fe0 --- /dev/null +++ b/EnvelopeGenerator.Application/Pdf/Behaviors/SendEmailBehavior.cs @@ -0,0 +1,61 @@ +using EnvelopeGenerator.Domain.Constants; +using MediatR; +using Microsoft.Extensions.Logging; + +namespace EnvelopeGenerator.Application.Pdf.Behaviors; + +/// +/// +/// +public class SendEmailBehavior : IPipelineBehavior +{ + private readonly ILogger _logger; + + /// + /// + /// + /// + public SendEmailBehavior(ILogger logger) + { + _logger = logger; + } + + /// + /// + /// + /// + /// + /// + /// + public async Task Handle(BurnPdfCommand request, RequestHandlerDelegate next, CancellationToken cancel) + { + var docResult = await next(cancel); + + var mailToCreator = request.Envelope!.FinalEmailToCreator; + var mailToReceivers = request.Envelope.FinalEmailToReceivers; + + if (mailToCreator is not null && mailToCreator != (int)FinalEmailType.No) + { + _logger.LogDebug("Sending email to creator ..."); + SendFinalEmailToCreator(request.Envelope); // , pAttachment + } + else + { + _logger.LogWarning("No SendFinalEmailToCreator - mailToCreator [{mailToCreator}] <> [{FinalEmailType.No}] ", + mailToCreator, FinalEmailType.No); + } + + if (mailToReceivers != (int)FinalEmailType.No) + { + _logger.LogDebug("Sending emails to receivers..."); + SendFinalEmailToReceivers(request.Envelope); // , pAttachment + } + else + { + _logger.LogWarning("No SendFinalEmailToReceivers - mailToReceivers [{mailToReceivers}] <> [{FinalEmailType.No}] ", + mailToReceivers, FinalEmailType.No); + } + + return docResult; + } +} \ No newline at end of file