Пример #1
0
        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());
                }
            }
        }