/// <summary> /// Returns recipients collection with macros. /// </summary> /// <param name="select">Query subselect conditional.</param> /// <param name="contactCollection">Unique identifier of contacts with email address.</param> /// <param name="bulkEmailRId">Numeric identifier of BulkEmail.</param> /// <returns></returns> public List <rcpt_merge_var> GetRecipientsMacrosCollection(Select select, Dictionary <Guid, string> contactCollection, int bulkEmailRId) { List <rcpt_merge_var> personalMergeVars = new List <rcpt_merge_var>(); var bulkEmailId = GetBulkEmailIdFromRId(bulkEmailRId); var personalMacros = _macrosCollection.Where(m => !m.IsGlobal); var arguments = new Dictionary <Guid, Object>(); var argValue = new Dictionary <string, Object>(); argValue.Add("SubSelect", select); argValue.Add("JoinColumnName", JoinColumnName); argValue.Add("SchemaName", PersonalMacrosSchema); arguments.Add(Guid.Empty, argValue); arguments.Add(MarketingConsts.EmailTemplateMacrosParentContactId, argValue); var result = base.GetMacrosValuesCollection(personalMacros, arguments); foreach (var res in result) { rcpt_merge_var personalMergeVar = new rcpt_merge_var(); foreach (var macros in res.Value) { var merge_var_new = new merge_var { name = macros.Key, content = macros.Value }; personalMergeVar.vars.Add(merge_var_new); } var address = contactCollection[(Guid)res.Key]; personalMergeVar.rcpt = address; InitPersonalUnsubscribeMacros(personalMergeVar, bulkEmailRId, bulkEmailId, address); personalMergeVars.Add(personalMergeVar); } return(personalMergeVars); }
/// <summary> /// ######### ######### ############ ########, ######### ####### /// </summary> /// <param name="rcptMergeVar">###### ######### ############ ########</param> /// <param name="bulkEmailRId">######## ############# ###### email ########</param> /// <param name="bulkEmailId">############# ###### email ########</param> /// <param name="emailAddress">Email ##### ##########</param> public void InitPersonalUnsubscribeMacros(rcpt_merge_var rcptMergeVar, int bulkEmailRId, Guid bulkEmailId, string emailAddress) { if (_isUsubscribeFromAllMailings) { return; } string bulkEmail = String.Format("{0:0000000000}", bulkEmailRId); foreach (string alias in UnsubscribeMacrosAliases) { rcptMergeVar.rcpt = emailAddress; string unsubscribeHash = MandrillUtilities.StringCrypto.EncryptString(emailAddress, bulkEmailId.ToString("N")); string unsubscribeKey = string.Concat(bulkEmail, unsubscribeHash); unsubscribeKey = HttpUtility.UrlEncode(unsubscribeKey); string unsubscribeLinkParameter = string.Format(UnsubscribeLinkParameterPattern, unsubscribeKey); string unsubscribeLink = !string.IsNullOrEmpty(_unsubscribeApplicationUrl) ? string.Concat(_unsubscribeApplicationUrl, unsubscribeLinkParameter) : string.Concat(string.Format(UnsubscribeLinkPattern, _applicationUrl), unsubscribeLinkParameter); var mergeVar = new merge_var() { name = alias, content = unsubscribeLink }; rcptMergeVar.vars.Add(mergeVar); } }
private rcpt_merge_var CreateRecipientMergeVars(Guid contactId, string emailAddress, Dictionary <string, string> macrosValues) { var personalMergeVar = new rcpt_merge_var(); foreach (var macros in macrosValues) { personalMergeVar.vars.Add(CreateMergeVar(macros.Key, macros.Value)); } personalMergeVar.vars.Add( CreateMergeVar(BulkEmailHyperlinkHelper.ContactIdMacrosName, contactId.ToString())); personalMergeVar.vars.Add(CreateMergeVar(BulkEmailHyperlinkHelper.BulkEmailRecipientIdName, Guid.Empty.ToString())); personalMergeVar.rcpt = emailAddress; return(personalMergeVar); }
public List <rcpt_merge_var> GetPersonalMergeVars(Select select, Dictionary <Guid, IMessageRecipientInfo> contactCollection, IEnumerable <MacrosInfo> macrosCollection) { List <rcpt_merge_var> personalMergeVars = new List <rcpt_merge_var>(); Dictionary <object, Dictionary <string, string> > results = GetPersonalMacrosValues(select, macrosCollection); foreach (KeyValuePair <object, Dictionary <string, string> > result in results) { Guid contactId = (Guid)result.Key; Dictionary <string, string> macrosValues = result.Value; if (contactCollection.ContainsKey(contactId)) { IMessageRecipientInfo recipient = contactCollection[contactId]; rcpt_merge_var personalMergeVar = CreateRecipientMergeVars(recipient, macrosValues); personalMergeVars.Add(personalMergeVar); } } return(personalMergeVars); }
/// <summary> /// Creates macros variables for recipient template. /// </summary> /// <param name="recipient">Recipient information. Contains contact identifier, recipient identifier.</param> /// <param name="macrosValues">Macros values.</param> /// <returns>Macros variables for recipient template.</returns> private rcpt_merge_var CreateRecipientMergeVars(IMessageRecipientInfo recipient, Dictionary <string, string> macrosValues) { rcpt_merge_var personalMergeVar = new rcpt_merge_var(); foreach (KeyValuePair <string, string> macros in macrosValues) { personalMergeVar.vars.Add(CreateMergeVar(macros.Key, macros.Value)); } personalMergeVar.vars.Add(CreateMergeVar( BulkEmailHyperlinkHelper.ContactIdMacrosName, recipient.ContactId.ToString() )); personalMergeVar.vars.Add(CreateMergeVar( BulkEmailHyperlinkHelper.BulkEmailRecipientIdName, recipient.Id.ToString() )); personalMergeVar.rcpt = recipient.EmailAddress; return(personalMergeVar); }
/// <summary> /// Returns personal macros of the contacts. /// </summary> /// <param name="select">Query subselect conditional.</param> /// <param name="contactCollection">Unique identifier of contacts with recipient information.</param> /// <param name="macrosCollection">Collection of macros.</param> /// <returns>The recipients macros.</returns> public Dictionary <IMessageRecipientInfo, rcpt_merge_var> GetRecipientMergeVars(Select select, Dictionary <Guid, IMessageRecipientInfo> contactCollection, IEnumerable <MacrosInfo> macrosCollection) { Dictionary <IMessageRecipientInfo, rcpt_merge_var> personalMergeVars = new Dictionary <IMessageRecipientInfo, rcpt_merge_var>(); Dictionary <Guid, Dictionary <string, string> > personalMacrosResult = GetPersonalMacrosValues(select, macrosCollection).ToDictionary(entry => (Guid)entry.Key, entry => entry.Value); foreach (KeyValuePair <Guid, IMessageRecipientInfo> recipient in contactCollection) { rcpt_merge_var personalMergeVar = null; if (personalMacrosResult.ContainsKey(recipient.Key)) { Dictionary <string, string> macrosValues = personalMacrosResult[recipient.Key]; personalMergeVar = CreateRecipientMergeVars(recipient.Value, macrosValues); } personalMergeVars.Add(recipient.Value, personalMergeVar); } return(personalMergeVars); }
private rcpt_merge_var GetContactPersonalMacroses(Dictionary <int, string> macrosColumnsIndex, string address, IDataReader reader, MarketingMacrosHelper macrosHelper) { var rcptMergeVar = new rcpt_merge_var(); if (macrosColumnsIndex.Count <= 0) { return(rcptMergeVar); } rcptMergeVar.rcpt = address; foreach (var macros in macrosColumnsIndex) { rcptMergeVar.vars.Add(new merge_var() { name = macros.Value, content = (reader[macros.Key] == System.DBNull.Value) ? string.Empty : reader[macros.Key].ToString() }); } return(rcptMergeVar); }
/// <summary> /// Returns contact macros. /// </summary> /// <param name="contactId">Unique identifier of Contact.</param> /// <param name="emailRecipient">Email address of recipients.</param> /// <param name="bulkEmailId">Unique identifier of BulkEmail.</param> /// <returns></returns> public rcpt_merge_var GetRecipientMacros(Guid contactId, string emailRecipient, Guid bulkEmailId) { var personalMacros = _macrosCollection.Where(m => !m.IsGlobal); var arguments = new Dictionary <Guid, Object>(); arguments.Add(Guid.Empty, new KeyValuePair <string, Guid>(PersonalMacrosSchema, contactId)); arguments.Add(MarketingConsts.EmailTemplateMacrosParentContactId, contactId); var replaceDictionary = base.GetMacrosValues(personalMacros, arguments); rcpt_merge_var personalMergeVar = new rcpt_merge_var(); foreach (var macros in replaceDictionary) { var merge_var_new = new merge_var { name = macros.Key, content = macros.Value }; personalMergeVar.vars.Add(merge_var_new); } personalMergeVar.rcpt = emailRecipient; int bulkEmailRId = GetBulkEmailRIdFromId(bulkEmailId); InitPersonalUnsubscribeMacros(personalMergeVar, bulkEmailRId, bulkEmailId, emailRecipient); return(personalMergeVar); }