private cRespCreateMembersList.RootObject AgregarMiembros(RequestGeneraCampania miembros, string lista_id, string dataCenter, string apiKey) { //Llenar la Lista Recien Creada de los Miembros Funciones.csMailChimp lista = new Funciones.csMailChimp(); cRespCreateMembersList.RootObject parsed = new cRespCreateMembersList.RootObject(); cCreateMembersList.RootObject member = new cCreateMembersList.RootObject(); member = lista.ObtieneSocias(miembros); string sLista; if (member.members.Count() > 500) { Int32 iteracion; Int32 mod = member.members.Count() % 500; if (mod == 0) { iteracion = member.members.Count() / 500; } else { iteracion = (member.members.Count() / 500) + 1; } Int32 posicion = 0; for (int i = 0; i < iteracion; i++) { cCreateMembersList.RootObject memberRange = new cCreateMembersList.RootObject(); if (posicion + 500 <= member.members.Count()) { memberRange.members = member.members.GetRange(posicion, 500); } else { memberRange.members = member.members.GetRange(posicion, member.members.Count() - posicion); } memberRange.update_existing = true; sLista = lista.CreateMembersList(dataCenter, apiKey, lista_id, memberRange); posicion = posicion + 500; } } else { member.update_existing = true; sLista = lista.CreateMembersList(dataCenter, apiKey, lista_id, member); parsed = (cRespCreateMembersList.RootObject)JsonConvert.DeserializeObject(sLista, typeof(cRespCreateMembersList.RootObject)); } return(parsed); }
// De la Lista de Miembros se asigna a la Clase para su Lectura public cCreateMembersList.RootObject ObtieneSocias(RequestGeneraCampania miembros) { cCreateMembersList.RootObject member = new cCreateMembersList.RootObject(); List <cCreateMembersList.Member> lstMember = new List <cCreateMembersList.Member>(); // Aqui se van a omitir los miembros sin correo y únicos var uniqueMiembros = from p in miembros.miembros where !string.IsNullOrEmpty(p.correo) group p by new { p.correo } into grupoMiembros select grupoMiembros.FirstOrDefault(); foreach (var item in uniqueMiembros) { lstMember.Add(new cCreateMembersList.Member { email_address = item.correo, status = "subscribed", status_if_new = "subscribed", merge_fields = new cCreateMembersList.MergeFields() { ID = item.hidden, MEMBRESIA = item.clave, NOMBRE = item.nombre, FECHA = item.fecha, CIUDAD = item.ciudad, ESTADO = item.estado, TIENDA = item.tienda, STATUS = item.status, TELEFONO = item.telefono, NIVEL = item.nivel } }); } member.members = lstMember; return(member); }
// Subscribir o Desusbcribir una Lista de Miembros public string CreateMembersList(string dataCenter, string apiKey, string ListId, cCreateMembersList.RootObject member) { var uri = string.Format("https://{0}.api.mailchimp.com/3.0/lists/{1}", dataCenter, ListId); var jsonString = JsonConvert.SerializeObject(member); try { using (var webClient = new WebClient()) { webClient.Headers.Add("Accept", "application/json"); webClient.Headers.Add("Authorization", "apikey " + apiKey); webClient.Encoding = Encoding.UTF8; return(webClient.UploadString(uri, jsonString)); } } catch (WebException we) { using (var sr = new StreamReader(we.Response.GetResponseStream())) { return(sr.ReadToEnd()); } } }