/// <summary>
        /// Batches the subscribe.
        /// </summary>
        /// <param name="recordList">The records</param>
        public virtual listBatchSubscribeOutput BatchSubscribe(IEnumerable<MailChimpEventQueueRecord> recordList)
        {
            if (String.IsNullOrEmpty(_mailChimpSettings.DefaultListId))
                throw new ArgumentException("MailChimp list is not specified");

            var input = new listBatchSubscribeInput();
            //any directive overrides
            input.api_Validate = true;
            input.api_AccessType = EnumValues.AccessType.Serial;
            input.api_OutputType = EnumValues.OutputType.JSON;
            //method parameters
            input.parms.apikey = _mailChimpSettings.ApiKey;
            input.parms.id = _mailChimpSettings.DefaultListId;
            input.parms.double_optin = false;
            input.parms.replace_interests = true;
            input.parms.update_existing = true;
            var batch = new List<Dictionary<string, object>>();

            foreach (var sub in recordList)
            {
                var entry = new Dictionary<string, object>();
                entry.Add("EMAIL", sub.Email);
                batch.Add(entry);
            }

            input.parms.batch = batch;

            //execution
            var cmd = new listBatchSubscribe(input);

            listBatchSubscribeOutput listSubscribeOutput = cmd.Execute();
            return listSubscribeOutput;
        }
示例#2
0
        /// <summary>
        /// Gets the list batch subscribe input.
        /// </summary>
        /// <param name="apikey">The apikey.</param>
        /// <param name="mailChimpListId">The mail chimp list id.</param>
        /// <returns></returns>
        private static listBatchSubscribeInput GetListBatchSubscribeInput(string apikey, string mailChimpListId)
        {
            var listBatchSubscribeInput = new listBatchSubscribeInput
            {
                api_Validate   = true,
                api_AccessType = EnumValues.AccessType.Serial,
                api_OutputType = EnumValues.OutputType.JSON,
                parms          =
                {
                    apikey            = apikey,
                    id                = mailChimpListId,
                    double_optin      = false,
                    replace_interests = true,
                    update_existing   = true
                }
            };

            return(listBatchSubscribeInput);
        }
        /// <summary>
        /// Batches the subscribe.
        /// </summary>
        /// <param name="recordList">The records</param>
        public virtual listBatchSubscribeOutput BatchSubscribe(IEnumerable <MailChimpEventQueueRecord> recordList)
        {
            if (String.IsNullOrEmpty(_mailChimpSettings.DefaultListId))
            {
                throw new ArgumentException("MailChimp list is not specified");
            }

            var input = new listBatchSubscribeInput();

            //any directive overrides
            input.api_Validate   = true;
            input.api_AccessType = EnumValues.AccessType.Serial;
            input.api_OutputType = EnumValues.OutputType.JSON;
            //method parameters
            input.parms.apikey            = _mailChimpSettings.ApiKey;
            input.parms.id                = _mailChimpSettings.DefaultListId;
            input.parms.double_optin      = false;
            input.parms.replace_interests = true;
            input.parms.update_existing   = true;
            var batch = new List <Dictionary <string, object> >();

            foreach (var sub in recordList)
            {
                var entry = new Dictionary <string, object>();
                entry.Add("EMAIL", sub.Email);
                batch.Add(entry);
            }

            input.parms.batch = batch;

            //execution
            var cmd = new listBatchSubscribe(input);

            listBatchSubscribeOutput listSubscribeOutput = cmd.Execute();

            return(listSubscribeOutput);
        }
    /// <summary>
    /// MaqilChimp Integartion
    /// </summary>
    /// <param name="UserType"></param>
    /// <returns></returns>
    private bool AddMailChimpSubscriber(int UserType)
    {
        bool returnVal = false;
        try
        {
            if (chkAgreeReceiveNewsletters.Checked == true)
            {
                listBatchSubscribeInput input = new listBatchSubscribeInput();
                input.api_AccessType = EnumValues.AccessType.Serial; // access
                input.api_OutputType = EnumValues.OutputType.XML; // output
                input.api_MethodType = PerceptiveMCAPI.EnumValues.MethodType.POST;// method
                input.api_Validate = false;// validate
                input.parms.double_optin = false;
                input.parms.replace_interests = true;
                input.parms.update_existing = true;

                input.parms.apikey = WebConfig.MailChimpApiKeyNew;
                input.parms.id = WebConfig.UserNewsLetterListID;

                // ------------------------------ address
                List<Dictionary<string, object>> batch = new List<Dictionary<string, object>>();
                Dictionary<string, object> entry = new Dictionary<string, object>();
                List<interestGroupings> groupings = new List<interestGroupings>();

                entry.Add("EMAIL", txtEmail.Text);
                batch.Add(entry);
                interestGroupings ig = new interestGroupings { name = "Account Status", groups = new List<string> { "New User Contributor" } };
                //if (UserType == 2)
                //{
                //    ig = new interestGroupings { name = "Account Status", groups = new List<string> { "New User Business" } };
                //}
                groupings.Add(ig);

                entry.Add("groupings", groupings);
                batch.Add(entry);
                input.parms.batch = batch;
                // execution
                listBatchSubscribe cmd = new listBatchSubscribe(input);
                listBatchSubscribeOutput output = cmd.Execute();
                //phase-1 enhancement

                if ((output != null) && (output.api_ErrorMessages.Count > 0))
                {
                    string ErrorCode = output.api_ErrorMessages.FirstOrDefault().code;
                    string Error = "Error occured. " + output.api_ErrorMessages.FirstOrDefault().error;

                    messages.InnerHtml = ShowMessage(headertext, ErrorCode + "</br>" + Error, 1);
                    messages.Visible = true;
                    returnVal = false;
                }
                else
                {
                    if (output.result.success_count > 0)
                    {
                        returnVal = true;
                    }
                }
            }

        }
        catch (Exception ex)
        {
            messages.InnerHtml = ShowMessage(headertext, ex.Message.ToString(), 1);
            messages.Visible = true;
            returnVal = false;
        }
        return returnVal;
    }
        public void listBatchSubscribe_method(dynamic o)
        {
            string TagID = o.TagID;
            string TagName = o.TagName;
            string Category = o.Category;

            if (!dicMailChimpLists.ContainsKey(TagName))
                return;

            string MailChimp_List_ID = dicMailChimpLists[TagName].ListId;
            List<string> EMails = this.GetListSubscriberEMails(this.MailChimp_API_Key, MailChimp_List_ID).Distinct().ToList();
            Dictionary<string, string> dicEMails = new Dictionary<string, string>();
            if (EMails.Count > 0)
                dicEMails = EMails.ToDictionary(x => x);

            listBatchSubscribeInput input = new listBatchSubscribeInput();
            // any directive overrides
            input.api_Validate = true;
            input.api_AccessType = EnumValues.AccessType.Serial;
            input.api_OutputType = EnumValues.OutputType.XML;
            // method parameters
            input.parms.apikey = this.MailChimp_API_Key;
            input.parms.id = MailChimp_List_ID;
            input.parms.double_optin = false;
            input.parms.replace_interests = true;
            input.parms.update_existing = true;

            List<Dictionary<string, object>> batch = new List<Dictionary<string, object>>();
            if (Category == "Student")
            {
                List<string> StudentIDs = new List<string>();
                if (this.StudentTags.ContainsKey(TagID))
                    StudentIDs = this.StudentTags[TagID];
                List<dynamic> Students = new List<dynamic>();
                StudentIDs.ForEach(x=>
                {
                    if (dicStudents.ContainsKey(x))
                        Students.Add(dicStudents[x]);
                });
                SyncListMergeVars(this.MailChimp_API_Key, MailChimp_List_ID, new Dictionary<string, string>() { { "ID", "學生系統編號" }, { "NAME", "姓名" }, { "GENDER", "性別" }, { "BIRTHDAY", "生日" }, { "YEAR", "生日之年" }, { "MONTH", "生日之月" }, { "DAY", "生日之日" }, { "ENROLLYEAR", "入學年度" }, { "DEPT", "系所組別" }, { "EMAIL", "電子郵件" }, { "STATUS", "學生狀態" } });
                foreach (dynamic oo in Students)
                {
                    if (oo.Status == "退學" || oo.Status == "刪除")
                        continue;

                    foreach (string email in oo.EMails)
                    {
                        Dictionary<string, object> entry = new Dictionary<string, object>();

                        entry.Add("ID", oo.ID);
                        entry.Add("NAME", oo.Name);
                        entry.Add("GENDER", oo.Gender);
                        entry.Add("BIRTHDAY", oo.Birthday);
                        entry.Add("YEAR", oo.Birthday_Year);
                        entry.Add("MONTH", oo.Birthday_Month);
                        entry.Add("DAY", oo.Birthday_Day);
                        entry.Add("ENROLLYEAR", oo.EnrollYear);
                        entry.Add("DEPT", oo.Dept);
                        entry.Add("EMAIL", email);
                        entry.Add("STATUS", oo.Status);

                        batch.Add(entry);
                        if (dicEMails.ContainsKey(email))
                            dicEMails.Remove(email);
                    }
                }
            }
            else if (Category == "Teacher")
            {
                List<string> TeacherIDs = new List<string>();
                if (this.TeacherTags.ContainsKey(TagID))
                    TeacherIDs = this.TeacherTags[TagID];
                List<dynamic> Teachers = new List<dynamic>();
                TeacherIDs.ForEach(x =>
                {
                    if (this.dicTeachers.ContainsKey(x))
                        Teachers.Add(dicTeachers[x]);
                });
                SyncListMergeVars(this.MailChimp_API_Key, MailChimp_List_ID, new Dictionary<string, string>() { { "ID", "教師系統編號" }, { "NAME", "姓名" }, { "GENDER", "性別" }, { "BIRTHDAY", "生日" }, { "YEAR", "生日之年" }, { "MONTH", "生日之月" }, { "DAY", "生日之日" }, { "EMAIL", "電子郵件" } });
                foreach (dynamic oo in Teachers)
                {
                    if (oo.Status == "256")
                        continue;

                    foreach (string email in oo.EMails)
                    {
                        Dictionary<string, object> entry = new Dictionary<string, object>();

                        entry.Add("ID", oo.ID);
                        entry.Add("NAME", oo.Name);
                        entry.Add("GENDER", oo.Gender);
                        entry.Add("BIRTHDAY", oo.Birthday);
                        entry.Add("YEAR", oo.Birthday_Year);
                        entry.Add("MONTH", oo.Birthday_Month);
                        entry.Add("DAY", oo.Birthday_Day);
                        entry.Add("EMAIL", email);

                        batch.Add(entry);
                        if (dicEMails.ContainsKey(email))
                            dicEMails.Remove(email);
                    }
                }
            }
            input.parms.batch = batch;

            //  取消訂閱不在電子報名單中的訂閱者
            List<string> UnSubscribeEMails = new List<string>();
            foreach (string email in dicEMails.Keys)
                UnSubscribeEMails.Add(email);

            listBatchUnsubscribeOutput output_unsubscribe = this.listBatchUnSubscribe_method(this.MailChimp_API_Key, MailChimp_List_ID, UnSubscribeEMails);

            // 訂閱電子報
            listBatchSubscribe cmd = new listBatchSubscribe(input);
            listBatchSubscribeOutput output = cmd.Execute();
            // output, format with user control
            //if (output.api_ErrorMessages.Count > 0)
            //{
            //    showResults(output.api_Request, output.api_Response, // raw data
            //    output.api_ErrorMessages, output.api_ValidatorMessages); // & errors
            //}
            //else
            //{
            //    show_listBatch1.Display(output);
            //}
        }
示例#6
0
 public MailChimpResult Subscribe(List<Dictionary<string, object>> batch, string listId)
 {
     Check.Argument.IsNotNull(batch, "batch");
     Check.Argument.IsNotNullOrEmpty(listId, "listId");
     var input = new listBatchSubscribeInput
                 {
                     api_Validate = true,
                     api_AccessType = EnumValues.AccessType.Serial,
                     api_OutputType = EnumValues.OutputType.JSON,
                     parms =
                         {
                             apikey = MailChimpConfiguration.ApiKey,
                             id = listId,
                             double_optin = DoubleOptin,
                             replace_interests = ReplaceInterests,
                             update_existing = UpdateExisting,
                             batch = batch
                         },
                 };
     var cmd = new listBatchSubscribe(input);
     listBatchSubscribeOutput output = cmd.Execute();
     return new MailChimpResult(output.api_ErrorMessages.Count <= 0, output.api_ErrorMessages);
 }