update ConfigEmailOut to add notifications

This commit is contained in:
2025-09-04 09:28:13 +02:00
parent f20243d02c
commit 73da768ed3
3 changed files with 54 additions and 5 deletions

View File

@@ -1,5 +1,7 @@
using EnvelopeGenerator.Application.Dto.EnvelopeReceiver;
using EnvelopeGenerator.Domain.Constants;
using MediatR;
using Newtonsoft.Json;
using System.Dynamic;
namespace EnvelopeGenerator.Application.Notifications.DocSigned;
@@ -8,12 +10,24 @@ namespace EnvelopeGenerator.Application.Notifications.DocSigned;
///
/// </summary>
/// <param name="Original"></param>
public record DocSignedNotification(EnvelopeReceiverDto Original) : EnvelopeReceiverDto(Original), INotification
public record DocSignedNotification(EnvelopeReceiverDto Original) : EnvelopeReceiverDto(Original), INotification, ISendMailNotification
{
/// <summary>
///
/// </summary>
public required ExpandoObject Annotations { get; init; }
/// <summary>
///
/// </summary>
public EmailTemplateType TemplateType => EmailTemplateType.DocumentSigned;
/// <summary>
///
/// </summary>
public string EmailAddress => Receiver?.EmailAddress
?? throw new InvalidOperationException($"Receiver is null." +
$"DocSignedNotification:\n{JsonConvert.SerializeObject(this, Format.Json.ForDiagnostics)}");
}
/// <summary>

View File

@@ -0,0 +1,35 @@
using DigitalData.Core.Abstraction.Application.Repository;
using DigitalData.EmailProfilerDispatcher.Abstraction.Entities;
using EnvelopeGenerator.Application.Configurations;
using EnvelopeGenerator.Domain.Entities;
using Microsoft.Extensions.Options;
namespace EnvelopeGenerator.Application.Notifications.DocSigned.Handlers;
/// <summary>
///
/// </summary>
public class SendSignedMailHandler : SendMailHandler<DocSignedNotification>
{
/// <summary>
///
/// </summary>
/// <param name="tempRepo"></param>
/// <param name="emailOutRepo"></param>
/// <param name="mailParamsOptions"></param>
/// <param name="dispatcherParamsOptions"></param>
public SendSignedMailHandler(IRepository<EmailTemplate> tempRepo, IRepository<EmailOut> emailOutRepo, IOptions<MailParams> mailParamsOptions, IOptions<DispatcherParams> dispatcherParamsOptions) : base(tempRepo, emailOutRepo, mailParamsOptions, dispatcherParamsOptions)
{
}
/// <summary>
///
/// </summary>
/// <param name="notification"></param>
/// <param name="emailOut"></param>
/// <param name="cancel"></param>
protected override void ConfigEmailOut(DocSignedNotification notification, EmailOut emailOut, CancellationToken cancel)
{
emailOut.ReferenceString = notification.EmailAddress;
}
}

View File

@@ -63,11 +63,11 @@ public abstract class SendMailHandler<TNotification> : INotificationHandler<TNot
protected virtual Dictionary<string, string> SubjectPlaceHolders { get; } = new();
/// <summary>
/// ReferenceString = Envelope.Uuid
///
/// </summary>
/// <param name="notification"></param>
/// <param name="emailOut"></param>
/// <returns></returns>
protected abstract void ConfigEmailOut(EmailOut emailOut);
protected abstract void ConfigEmailOut(TNotification notification, EmailOut emailOut);
/// <summary>
///
@@ -116,7 +116,7 @@ public abstract class SendMailHandler<TNotification> : INotificationHandler<TNot
WfId = (int)EnvelopeStatus.MessageConfirmationSent,
};
ConfigEmailOut(emailOut);
ConfigEmailOut(notification, emailOut);
await EmailOutRepo.CreateAsync(emailOut, cancel);
}