protected override bool Execute(T data, FormSubmitContext formSubmitContext)
{
if (data.MessageId == Guid.Empty)
{
logger.LogWarn("Empty message id");
return false;
}
var toContacts = GetToContacts(data, formSubmitContext);
if (toContacts == null || toContacts.Count == 0)
{
return false;
}
try
{
var customTokens = BuildCustomTokens(data, formSubmitContext);
foreach (var to in toContacts)
{
SendMail(to, customTokens, data.MessageId);
}
}
catch (Exception ex)
{
logger.LogError(ex.Message, ex);
return false;
}
return true;
}
protected virtual Dictionary<string, object> BuildCustomTokens(T data, FormSubmitContext formSubmitContext)
{
var formFields = formFieldConverter.Convert(formSubmitContext.Fields);
var customTokens = new Dictionary<string, object>();
customTokens.Add(Constants.CustomTokensFormKey, formFields);
foreach (var formField in formFields)
{
customTokens.Add($"form_{formField.Name}", GetSingleStringValue(formField));
}
return customTokens;
}
protected virtual void SendMail(ContactIdentifier toContact, Dictionary<string, object> customTokens, Guid messageId)
{
var automatedMessage = new AutomatedMessage();
automatedMessage.ContactIdentifier = toContact;
automatedMessage.MessageId = messageId;
automatedMessage.CustomTokens = customTokens;
automatedMessage.TargetLanguage = Sitecore.Context.Language.Name;
clientApiService.SendAutomatedMessage(automatedMessage);
}
{
if (data.MessageId == Guid.Empty)
{
logger.LogWarn("Empty message id");
return false;
}
var toContacts = GetToContacts(data, formSubmitContext);
if (toContacts == null || toContacts.Count == 0)
{
return false;
}
try
{
var customTokens = BuildCustomTokens(data, formSubmitContext);
foreach (var to in toContacts)
{
SendMail(to, customTokens, data.MessageId);
}
}
catch (Exception ex)
{
logger.LogError(ex.Message, ex);
return false;
}
return true;
}
protected virtual Dictionary<string, object> BuildCustomTokens(T data, FormSubmitContext formSubmitContext)
{
var formFields = formFieldConverter.Convert(formSubmitContext.Fields);
var customTokens = new Dictionary<string, object>();
customTokens.Add(Constants.CustomTokensFormKey, formFields);
foreach (var formField in formFields)
{
customTokens.Add($"form_{formField.Name}", GetSingleStringValue(formField));
}
return customTokens;
}
protected virtual void SendMail(ContactIdentifier toContact, Dictionary<string, object> customTokens, Guid messageId)
{
var automatedMessage = new AutomatedMessage();
automatedMessage.ContactIdentifier = toContact;
automatedMessage.MessageId = messageId;
automatedMessage.CustomTokens = customTokens;
automatedMessage.TargetLanguage = Sitecore.Context.Language.Name;
clientApiService.SendAutomatedMessage(automatedMessage);
}