Beispiel #1
0
 private bool InsertaHistoricoGeneradorCampania(RequestGeneraCampania genera, string campaign_id, string list_id, string usuario_alta_id)
 {
     try
     {
         using (DbContextJulio db = new DbContextJulio())
         {
             foreach (var item in genera.miembros)
             {
                 Dictionary <string, object> parameters = new Dictionary <string, object>();
                 parameters.Add("@participante_id", item.hidden);
                 parameters.Add("@campaign_id", campaign_id);
                 parameters.Add("@nombre_campania", genera.nombre_campania);
                 parameters.Add("@list_id", list_id);
                 parameters.Add("@nombre_lista", genera.nombre_lista);
                 parameters.Add("@asunto", genera.asunto);
                 parameters.Add("@usuario_alta_id", usuario_alta_id);
                 db.GetDataSet("[dbo].[usp_Inserta_historico_generador_campania]", CommandType.StoredProcedure, parameters);
             }
         }
         return(true);
     }
     catch (Exception ex)
     {
         return(false);
     }
 }
Beispiel #2
0
 public ResultJson GeneraLlamada(RequestGeneraLlamada genera, string usuario_alta_id)
 {
     try
     {
         RequestGeneraCampania inserta_campania = new RequestGeneraCampania();
         if (genera.campania_llamada == null) // Va a Insertar en Tabla Campaign
         {
             inserta_campania.nombre_campania = genera.nombre_campania;
             InsertaCampania(inserta_campania, string.Empty, genera.script, usuario_alta_id);
         }
         else // Va actualizar el script de la tabla Campaign
         {
             ActualizaScriptCampania(genera, usuario_alta_id);
         }
         // Inserta en la tabla participante_campaña
         if (inserta_campania.id != null) // Se dio de alta una campaña
         {
             genera.id = inserta_campania.id;
         }
         else
         {
             genera.id = genera.campania_llamada; // Se obtiene el id de la Campaña del Combo Seleccionado
         }
         InsertaParticipanteCampania(genera);
         result.Success = true;
         result.Message = "Ha sido generada la llamada exitosamente";
         return(result);
     }
     catch (Exception ex)
     {
         result.Success = false;
         result.Message = "Ocurrio un error al generar la llamadacampaña";
         return(result);
     }
 }
Beispiel #3
0
        private cLista.RootObject CreaLista(RequestGeneraCampania crealista, string DataCenter, string ApiKey)
        {
            // Crear una Lista
            Funciones.csMailChimp lista  = new Funciones.csMailChimp();
            cLista.RootObject     parsed = new cLista.RootObject();
            var sampleList = JsonConvert.SerializeObject(
                new
            {
                name    = crealista.nombre_lista,
                contact = new
                {
                    company  = "Julio Loyalty",
                    address1 = "Matriz",
                    address2 = "CDMX",
                    city     = "CDMX",
                    state    = "CDMX",
                    zip      = "30308",
                    country  = "MX",
                    phone    = ""
                },
                permission_reminder = crealista.permiso_recordatorio,
                campaign_defaults   = new
                {
                    from_name  = crealista.nombre_responder,
                    from_email = crealista.correo_responder,
                    subject    = crealista.asunto,
                    language   = "es",
                },
                email_type_option = true
            });
            string resp = lista.CreateList(DataCenter, sampleList, ApiKey);

            parsed = (cLista.RootObject)JsonConvert.DeserializeObject(resp, typeof(cLista.RootObject));
            return(parsed);
        }
Beispiel #4
0
 private RequestGeneraCampania InsertaCampania(RequestGeneraCampania genera, string campaign_id, string script, string usuario_alta_id)
 {
     try
     {
         using (DbContextJulio db = new DbContextJulio())
         {
             Dictionary <string, object> parameters = new Dictionary <string, object>();
             parameters.Add("@campaign_id", campaign_id);
             parameters.Add("@clave", campaign_id);
             parameters.Add("@descripcion", genera.nombre_campania);
             parameters.Add("@descripcion_larga", genera.nombre_campania);
             parameters.Add("@script", script);
             parameters.Add("@usuario_alta_id", usuario_alta_id);
             DataTable dt = db.GetDataSet("[dbo].[usp_Inserta_Campaign]", CommandType.StoredProcedure, parameters).Tables[0];
             if (dt.Rows.Count > 0)
             {
                 genera.id = dt.Rows[0]["id"].ToString();
             }
         }
         return(genera);
     }
     catch (Exception ex)
     {
         return(genera);
     }
 }
        public JsonResult Aceptar(RequestGeneraCampania request)
        {
            IRepositoryCampania campania = new Campania();

            request.UserName = User.Identity.Name;
            JsonResult data = Data(request.query);
            // Convertir Json a Clase Miembros
            var json = JsonConvert.SerializeObject(data.Data);

            request.miembros = JsonConvert.DeserializeObject <List <RequestGeneraCampania.Lista> >(json);
            return(Json(campania.GeneraCampania(request, ConfigurationManager.AppSettings["DataCenter"].ToString(), ConfigurationManager.AppSettings["MailChimpApiKey"].ToString(), User.Identity.GetUserId())));
        }
Beispiel #6
0
        private bool AsignaCampania(RequestGeneraCampania genera, string lista_id, string apiKey)
        {
            Funciones.csMailChimp           campaign   = new Funciones.csMailChimp();
            cCampaign_Recipients.RootObject recipients = new cCampaign_Recipients.RootObject();
            recipients.recipients         = new cCampaign_Recipients.Recipients();
            recipients.settings           = new cCampaign_Recipients.Settings();
            recipients.recipients.list_id = lista_id;
            recipients.type = "regular";
            recipients.settings.subject_line = genera.asunto;
            recipients.settings.reply_to     = genera.correo_responder;
            recipients.settings.from_name    = genera.nombre_responder;
            bool resp = campaign.UpdateCampaign(apiKey, genera, recipients);

            return(resp);
        }
Beispiel #7
0
        private cCampaign.RootObject CreaCampania(RequestGeneraCampania genera, string lista_id, string dataCenter, string apiKey)
        {
            Funciones.csMailChimp           campaign   = new Funciones.csMailChimp();
            cCampaign.RootObject            parsed     = new cCampaign.RootObject();
            cCampaign_Recipients.RootObject recipients = new cCampaign_Recipients.RootObject();
            recipients.recipients         = new cCampaign_Recipients.Recipients();
            recipients.settings           = new cCampaign_Recipients.Settings();
            recipients.recipients.list_id = lista_id;
            recipients.type = "regular";
            recipients.settings.subject_line = genera.asunto;
            recipients.settings.reply_to     = genera.correo_responder;
            recipients.settings.from_name    = genera.nombre_responder;
            string resp = campaign.CreateCampaign(dataCenter, apiKey, recipients);

            parsed = (cCampaign.RootObject)JsonConvert.DeserializeObject(resp, typeof(cCampaign.RootObject));
            return(parsed);
        }
Beispiel #8
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);
        }
Beispiel #9
0
 public ResultJson GeneraCampania(RequestGeneraCampania genera, string dataCenter, string apiKey, string usuario_alta_id)
 {
     try
     {
         // Crea Lista para la Campaña
         cLista.RootObject lista = CreaLista(genera, dataCenter, apiKey);
         // Obtiene el Id de la Lista Creada
         string lista_id = lista.id;
         // Hacer el MergeFields para Agregar los demas Campos Necesarios
         CreaMergeFields(dataCenter, apiKey, lista_id);
         // Agrega a los Miembros de la Lista Recien Creada
         cRespCreateMembersList.RootObject miembros = AgregarMiembros(genera, lista_id, dataCenter, apiKey);
         string campaign_id = string.Empty;
         // Crea la Campaña ó Selecciona la Campañia Pendiente sin Lista
         if (!string.IsNullOrEmpty(genera.nombre_campania) && string.IsNullOrEmpty(genera.campania_pendiente))
         {
             // Se crea la Campaña
             cCampaign.RootObject campania = CreaCampania(genera, lista_id, dataCenter, apiKey);
             campaign_id = campania.id;
         }
         else
         {
             // Se asigna la Campaña a la Lista Recien Creada
             bool campania = AsignaCampania(genera, lista_id, apiKey);
             campaign_id = genera.campania_pendiente;
         }
         // Realiza la inserción en la tabla campaign
         InsertaCampania(genera, campaign_id, string.Empty, usuario_alta_id);
         // Realiza la inserción en la tabla historico_generador_campania
         InsertaHistoricoGeneradorCampania(genera, campaign_id, lista_id, usuario_alta_id);
         result.Success = true;
         result.Message = "Ha sido generada la campaña exitosamente";
         return(result);
     }
     catch (Exception ex)
     {
         result.Success = false;
         result.Message = "Ocurrio un error al generar la campaña";
         return(result);
     }
 }
        // Actualizar Una Campaña
        public bool UpdateCampaign(string apiKey, RequestGeneraCampania genera, cCampaign_Recipients.RootObject recipients)
        {
            MailChimpManager mgr = new MailChimpManager(apiKey);

            try
            {
                Campaign newCampaign = new Campaign();
                newCampaign.Id                   = genera.campania_pendiente;
                newCampaign.Type                 = CampaignType.Regular;
                newCampaign.Settings             = new Setting();
                newCampaign.Settings.SubjectLine = recipients.settings.subject_line;
                newCampaign.Recipients           = new Recipient();
                newCampaign.Recipients.ListId    = recipients.recipients.list_id;
                newCampaign.Settings.FromName    = genera.nombre_responder;
                newCampaign.Settings.ReplyTo     = genera.correo_responder;
                newCampaign = mgr.Campaigns.AddOrUpdateAsync(newCampaign).Result;
                genera.campania_pendiente = newCampaign.Id;
                return(!String.IsNullOrWhiteSpace(genera.campania_pendiente));
            }
            finally
            {
                mgr = null;
            }
        }
        // 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);
        }