Esempio n. 1
0
        public void enviarMensajes(string UserPhone, string accountSid, string authToken, string mensaje, int idLista, DATA.Difusiones difusion, string correoUsuario, string passwordCorreo)
        {
            try
            {
                difusion.Id_Estado = 2;
                dif.ActualizarDifusiones(difusion);

                List <DATA.Lista_Negra> listaNegra = listNegra.ListarListaNegra();
                var lista_Negra = Mapper.Map <List <Models.Lista_Negra> >(listaNegra);

                TwilioClient.Init(accountSid, authToken);

                var contactos = conList.Listar().Where(x => x.Id_Lista == idLista);

                foreach (DATA.Contactos_Por_Listas infoContacto in contactos)
                {
                    var noEnviar = lista_Negra.Where(x => x.Id_Contacto == infoContacto.Id_contacto).FirstOrDefault();
                    if (noEnviar == null)
                    {
                        Console.WriteLine("no esta en lista naegra: " + infoContacto.Id_contacto);
                        DATA.Contactos   contacto  = con.BuscarContactos(infoContacto.Id_contacto);
                        DATA.Historiales historial = new DATA.Historiales();
                        historial.Id_Difusion = difusion.Id_Difusion;
                        historial.Id_Contacto = contacto.Id_Contacto;

                        if (difusion.Id_Tipo_Mensaje == 1)
                        {
                            var message = MessageResource.Create(
                                body: mensaje,
                                from: new Twilio.Types.PhoneNumber("+" + UserPhone),
                                statusCallback: new Uri(link + "/MessageStatus"),
                                to: new Twilio.Types.PhoneNumber("+" + contacto.Numero)
                                );

                            historial.Id_Message = message.Sid;
                            historial.Estado     = 6;
                        }
                        else
                        {
                            if (difusion.Id_Tipo_Mensaje == 2)
                            {
                                Debug.WriteLine("Voz");
                                Guid        id  = Guid.NewGuid();
                                XmlDocument doc = new XmlDocument();
                                doc.LoadXml("<?xml version=\"1.0\" encoding=\"UTF-8\"?><Response><Say voice=\"alice\" language=\"es-ES\">" + mensaje + "</Say></Response>");
                                String rootPath = Server.MapPath("~");
                                rootPath = rootPath + "\\Content\\xml\\" + id + ".xml";
                                doc.Save(rootPath);

                                var call = CallResource.Create(
                                    method: Twilio.Http.HttpMethod.Get,
                                    url: new Uri(link + "/Content/xml/" + id + ".xml"),
                                    from: new Twilio.Types.PhoneNumber("+" + UserPhone),
                                    to: new Twilio.Types.PhoneNumber("+" + contacto.Numero),
                                    statusCallback: new Uri(link + "/LlamadasStatus")
                                    );

                                historial.Id_Message = call.Sid;
                                historial.Estado     = 6;
                            }
                            else
                            {
                                if (difusion.Id_Tipo_Mensaje == 3)
                                {
                                    Debug.WriteLine("Correo");
                                    MailMessage email = new MailMessage();
                                    email.To.Add(new MailAddress(contacto.Correo));
                                    email.From       = new MailAddress("*****@*****.**");
                                    email.Subject    = "Asunto ( " + DateTime.Now.ToString("dd / MMM / yyy hh:mm:ss") + " ) ";
                                    email.Body       = mensaje;
                                    email.IsBodyHtml = true;
                                    email.Priority   = MailPriority.Normal;

                                    SmtpClient smtp = new SmtpClient();
                                    smtp.Host                  = "Smtp.Gmail.com";
                                    smtp.Port                  = 587;
                                    smtp.EnableSsl             = true;
                                    smtp.UseDefaultCredentials = false;
                                    smtp.Credentials           = new NetworkCredential(correoUsuario, passwordCorreo);

                                    //string output = null;
                                    historial.Id_Message = "--";

                                    try
                                    {
                                        smtp.Send(email);
                                        email.Dispose();
                                        //output = "Corre electrónico fue enviado satisfactoriamente.";
                                        historial.Estado = 4;
                                    }
                                    catch (Exception ex)
                                    {
                                        //output = "Error enviando correo electrónico: " + ex.Message;
                                        historial.Estado = 7;
                                    }
                                }
                            }
                        }

                        his.InsertarHistoriales(historial);
                    }
                    else
                    {
                        Console.WriteLine("esta en lista naegra: " + infoContacto.Id_contacto);
                    }
                }

                difusion.Id_Estado = 3;
                dif.ActualizarDifusiones(difusion);
            }
            catch (Exception ex)
            {
                ViewBag.Mensaje = ex.Message;
            }
        }
Esempio n. 2
0
        public ActionResult Index(Models.Difusiones difusion)
        {
            try
            {
                if (ModelState.IsValid)
                {
                    bool     permitirEnvio = false;
                    DateTime dateSend;
                    var      dateNow = DateTime.Now;
                    difusion.Fecha = dateNow;
                    TimeSpan ts;
                    ts = dateNow - dateNow;

                    string tipoEnvio = Request.Form["tipoEnvio"];
                    difusion.Username = Session["Username"].ToString();

                    //Debug.WriteLine(tipoEnvio);
                    if (difusion.Id_Tipo_Mensaje == 3 && difusion.passwordCorreo == null)
                    {
                        ModelState.AddModelError("errorPassword", "Debe escribir la contraseña de su correo para enviar el mensaje.");
                    }

                    if (tipoEnvio == "inmediato")
                    {
                        ts = dateNow - dateNow;
                        difusion.Fecha_Activacion = dateNow;
                        permitirEnvio             = true;
                    }
                    else
                    {
                        try
                        {
                            string   fechaPro = Request.Form["fechaPro"];
                            string[] datos    = fechaPro.Split('-');
                            string   horaPro  = Request.Form["horaPro"];
                            string[] datos2   = horaPro.Split(':');
                            dateSend = new DateTime(Int32.Parse(datos[0]), Int32.Parse(datos[1]), Int32.Parse(datos[2]), Int32.Parse(datos2[0]), Int32.Parse(datos2[1]), 00);

                            if (dateSend > dateNow)
                            {
                                ts            = dateSend - dateNow;
                                permitirEnvio = true;
                            }
                            else
                            {
                                ModelState.AddModelError("fechaerror", "No puede programar un envio para una fecha ya pasada.");
                            }

                            difusion.Fecha_Activacion = dateSend;
                        } catch (Exception e)
                        {
                            ModelState.AddModelError("fechaerror", "Revise la fecha, ya que algo no parece estar bien.");
                        }
                    }

                    if (permitirEnvio)
                    {
                        var difusionInsertar = Mapper.Map <DATA.Difusiones>(difusion);
                        dif.InsertarDifusiones(difusionInsertar);

                        int             maxId = dif.ListarDifusines().Where(x => x.Username == Session["Username"].ToString()).Max(x => x.Id_Difusion);
                        DATA.Telefonos  telefonoDelUsuario = tel.ListarTelefonos().Where(x => x.Username == Session["Username"].ToString()).First();
                        DATA.Mensajes   mensaje            = mens.ListarMensajes().Where(x => x.Id_Mensaje == difusion.Id_Mensaje).First();
                        DATA.Difusiones difusion2          = dif.BuscarDifusiones(maxId);
                        DATA.Usuarios   correoDelUsuario   = use.ListarUsuarios().Where(x => x.Username == Session["Username"].ToString()).First();

                        Task.Delay(ts).ContinueWith((x) => enviarMensajes(telefonoDelUsuario.Numero, telefonoDelUsuario.Account_Id, telefonoDelUsuario.Authtoken, mensaje.Cuerpo_Mensaje, difusion.Id_Lista, difusion2, correoDelUsuario.Correo, difusion.passwordCorreo));
                    }
                }
            }
            catch (Exception)
            {
                ModelState.AddModelError("error", "No se ha podido registrar la difusion.");
                return(RedirectToAction("Index"));
            }


            return(Index());
        }