private void ProcessGlobalMacros() { var globalMacros = _macrosCollection.Where(m => m.IsGlobal).ToList <MacrosInfo>(); var globalBulkEmailMacros = globalMacros.Where(x => x.ParentId == Guid.Empty); var globalOwnerMacros = globalMacros.Where(x => x.ParentId != Guid.Empty); var result = new Dictionary <string, string>(); var arguments = new Dictionary <Guid, Object>(); if (globalOwnerMacros.Any()) { arguments.Add(MarketingConsts.EmailTemplateMacrosParentGlobalId, _globalMacrosContactId); var macrosWithValue = base.GetMacrosValues(globalOwnerMacros, arguments); foreach (var macroWithValue in macrosWithValue) { result.Add(macroWithValue.Key, macroWithValue.Value); } } if (globalBulkEmailMacros.Any()) { arguments = new Dictionary <Guid, Object>(); arguments.Add(Guid.Empty, new KeyValuePair <string, Guid>(GlobalMacrosSchemaBulkEmail, _globalBulkEmailId)); var macrosWithValue = base.GetMacrosValues(globalBulkEmailMacros, arguments); foreach (var macroWithValue in macrosWithValue) { result.Add(macroWithValue.Key, macroWithValue.Value); } } foreach (var macros in result) { var globalMergeVar = new merge_var { name = macros.Key, content = macros.Value }; _globalMergeVars.Add(globalMergeVar); } }
/// <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); }