Skip to main content

BuildCustomTokens

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);
    }