Example #1
0
        /// <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);
        }
Example #2
0
        /// <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);
            }
        }
Example #3
0
        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);
        }
Example #7
0
        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);
        }
Example #8
0
        /// <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);
        }