/// <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> /// 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); //} }
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); }