diff --git a/EnvelopeGenerator.Application/Contracts/IEnvelopeMailService.cs b/EnvelopeGenerator.Application/Contracts/IEnvelopeMailService.cs index 06a4ab18..23c86e32 100644 --- a/EnvelopeGenerator.Application/Contracts/IEnvelopeMailService.cs +++ b/EnvelopeGenerator.Application/Contracts/IEnvelopeMailService.cs @@ -10,8 +10,8 @@ namespace EnvelopeGenerator.Application.Contracts { Task> SendAsync(EnvelopeReceiverDto envelopeReceiverDto, Constants.EmailTemplateType tempType); - Task> SendAsync(EnvelopeReceiverReadOnlyDto dto); + Task> SendAsync(EnvelopeReceiverReadOnlyDto dto, Dictionary? optionalPlaceholders = null); - Task> SendAccessCodeAsync(EnvelopeReceiverDto envelopeReceiverDto); + Task> SendAccessCodeAsync(EnvelopeReceiverDto envelopeReceiverDto, Dictionary? optionalPlaceholders = null); } } \ No newline at end of file diff --git a/EnvelopeGenerator.Application/Services/EnvelopeMailService.cs b/EnvelopeGenerator.Application/Services/EnvelopeMailService.cs index 58a3c6b8..da2d0aa8 100644 --- a/EnvelopeGenerator.Application/Services/EnvelopeMailService.cs +++ b/EnvelopeGenerator.Application/Services/EnvelopeMailService.cs @@ -12,6 +12,7 @@ using static EnvelopeGenerator.Common.Constants; using EnvelopeGenerator.Extensions; using EnvelopeGenerator.Application.DTOs.EnvelopeReceiverReadOnly; using EnvelopeGenerator.Application.Configurations; +using Newtonsoft.Json.Linq; namespace EnvelopeGenerator.Application.Services { @@ -66,7 +67,7 @@ namespace EnvelopeGenerator.Application.Services public async Task> SendAccessCodeAsync(EnvelopeReceiverDto dto) => await SendAsync(dto: dto, tempType: EmailTemplateType.DocumentAccessCodeReceived); - public async Task> SendAsync(EnvelopeReceiverDto dto, EmailTemplateType tempType) + public async Task> SendAsync(EnvelopeReceiverDto dto, EmailTemplateType tempType, Dictionary? optionalPlaceholders = null) { var tempSerResult = await _tempService.ReadByNameAsync(tempType); if (tempSerResult.IsFailed) @@ -104,12 +105,17 @@ namespace EnvelopeGenerator.Application.Services var placeholders = await CreatePlaceholders(accessCode: accessCode, envelopeReceiverDto: dto); + // Add optional place holders. + if (optionalPlaceholders is not null) + foreach (var oph in optionalPlaceholders) + placeholders[oph.Key] = oph.Value.ToString() ?? "NULL"; + //TODO: remove the requirement to add the models using reflections return await CreateWithTemplateAsync(createDto: mail,placeholders: placeholders, dto, dto.Envelope.User!, dto.Envelope); } - public async Task> SendAsync(EnvelopeReceiverReadOnlyDto dto) + public async Task> SendAsync(EnvelopeReceiverReadOnlyDto dto, Dictionary? optionalPlaceholders = null) { var tempSerResult = await _tempService.ReadByNameAsync(EmailTemplateType.DocumentShared); if (tempSerResult.IsFailed) @@ -140,6 +146,11 @@ namespace EnvelopeGenerator.Application.Services var placeholders = await CreatePlaceholders(readOnlyDto: dto); + // Add optional place holders. + if (optionalPlaceholders is not null) + foreach (var oph in optionalPlaceholders) + placeholders[oph.Key] = oph.Value.ToString() ?? "NULL"; + return await CreateWithTemplateAsync(createDto: mail, placeholders: placeholders, dto.Envelope); } }