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