Esempio n. 1
0
        private Dictionary <string, string> GetErrors(DataTable subscribers, List.BatchSubscribe lbs)
        {
            Dictionary <string, string> errors = new Dictionary <string, string>();

            if (lbs.ErrorCount == 0)
            {
                return(errors);
            }
            //DataColumn hasErrColum = subscribers.Columns.Add("HasError", typeof(bool));
            //DataColumn errMessageColum = subscribers.Columns.Add("ErrorMessage", typeof(string));


            foreach (List.BatchError bErr in lbs.Errors)
            {
                // string filterExp = string.Format(@"Email = '{0}'", bErr.Email);
                DataRow errRows = subscribers.Rows.Find(bErr.Email);
                if (errors.ContainsKey(bErr.Email))
                {
                    errors[bErr.Email] += ";" + bErr.Message;
                }
                else
                {
                    errors.Add(bErr.Email, bErr.Message);
                }
            }
            return(errors);
        }
Esempio n. 2
0
        }         // SubscriberToEntry

        public void ListBatchSubscribe(string listId, List <Subscriber> subscriberList)
        {
            var batch = new List <List.Merges>();

            foreach (Subscriber subscriber in subscriberList)
            {
                batch.Add(SubscriberToEntry(subscriber, s => s.Email));

                if (!string.IsNullOrWhiteSpace(subscriber.BrokerEmail))
                {
                    batch.Add(SubscriberToEntry(subscriber, s => s.BrokerEmail));
                }
            }             // for each subscriber

            var options = new List.SubscribeOptions {
                DoubleOptIn      = false,
                EmailType        = List.EmailType.Html,
                SendWelcome      = false,
                UpdateExisting   = true,
                ReplaceInterests = true,
            };

            List.BatchSubscribe batchSubscribe = m_oMcApi.ListBatchSubscribe(listId, batch, options);

            ms_oLog.Debug("ListBatchSubscribe Result: AddCount: {0} UpdateCount: {1} ErrorCount{2}.", batchSubscribe.AddCount, batchSubscribe.UpdateCount, batchSubscribe.ErrorCount);

            if (batchSubscribe.ErrorCount > 0)
            {
                foreach (var error in batchSubscribe.Errors)
                {
                    ms_oLog.Error("List.BatchSubscribe error: " + error.Message + " email:" + error.Email + " code:" + error.Code);
                }
            }
        }         // ListBatchSubscribe
Esempio n. 3
0
        public Dictionary <string, string> SubscribeBatch(DataTable subscribers)
        {
            var mc = new MCApi(_apiKey, true);
            var subscribeOptions =
                new List.SubscribeOptions
            {
                DoubleOptIn    = false,
                SendWelcome    = true,
                UpdateExisting = true,
            };

            var merges = new List <List.Merges>();

            Dictionary <int, string> fields = GetFieldsName(subscribers);

            try
            {
                subscribers.Columns["EMAIL"].AllowDBNull = false;
            }
            catch (Exception ex)
            {
                throw new DuradosException("Email is missing", ex);
            }
            try
            {
                subscribers.PrimaryKey = new DataColumn[] { subscribers.Columns["EMAIL"] };
            }
            catch (Exception ex)
            {
                throw new DuradosException("Email must be unique", ex);
            }


            foreach (DataRow row in subscribers.Rows)
            {
                var merge = new List.Merges();

                for (int i = 0; i < subscribers.Columns.Count; i++)
                {
                    string val = row[i].ToString();
                    if (subscribers.Columns[i].DataType == typeof(bool))
                    {
                        val = Convert.ToInt32(row.IsNull(i) ? false : row[i]).ToString();
                    }
                    merge.Add(fields[i], val);
                }
                merges.Add(merge);
            }
            if (merges.Count == 0)
            {
                return(null);
            }
            List.BatchSubscribe lbs = mc.ListBatchSubscribe(_listId, merges, subscribeOptions);

            return(GetErrors(subscribers, lbs));
        }