Example #1
0
        public async Task <IHttpActionResult> EnvioMensajesAgendar(int id, string metodo)
        {
            entRespuesta respuesta = new entRespuesta();
            var          _fun      = new FuncionesViewModels();

            try
            {
                var idUser       = JwtManager.getIdUserSession();
                var ultimaAgenda = await _ir.FindEspecial <Agenda>(id);//obtenemos el registro insertado

                if (ultimaAgenda != null && (ultimaAgenda.idUsuario == idUser))
                {
                    string fecha        = "";
                    string hora         = "";
                    string accion       = "";
                    int    codSms       = 0;
                    int    IdPlantilla  = 0;
                    int    idAgendaTipo = 0;
                    string contacto     = "";

                    if (metodo == "Agendar")
                    {
                        codSms       = 1;
                        IdPlantilla  = Convert.ToInt32(WebConfigurationManager.AppSettings["PlantillaAgendaInsertar"].ToString());
                        fecha        = Convert.ToDateTime(ultimaAgenda.fechaAgenda).ToString("dd-MM-yyyy");
                        hora         = ultimaAgenda.horaAgenda.GetValueOrDefault().ToString();
                        idAgendaTipo = ultimaAgenda.AgendaTipo.idAgendaTipo;
                        contacto     = ultimaAgenda.contacto;
                        accion       = "Agendamiento realizado";
                    }
                    else if (metodo == "Eliminar")
                    {
                        codSms       = 2;
                        IdPlantilla  = Convert.ToInt32(WebConfigurationManager.AppSettings["PlantillaAgendaEliminar"].ToString());
                        fecha        = Convert.ToDateTime(ultimaAgenda.fechaAgenda).ToString("dd-MM-yyyy");
                        hora         = ultimaAgenda.horaAgenda.GetValueOrDefault().ToString();
                        accion       = "Agendamiento eliminado";
                        idAgendaTipo = ultimaAgenda.AgendaTipo.idAgendaTipo;
                        contacto     = ultimaAgenda.contacto;
                    }
                    else if (metodo == "Modificar")
                    {
                        codSms       = 1;
                        IdPlantilla  = Convert.ToInt32(WebConfigurationManager.AppSettings["PlantillaAgendaModificar"].ToString());
                        fecha        = Convert.ToDateTime(ultimaAgenda.fechaAgenda).ToString("dd-MM-yyyy");
                        hora         = ultimaAgenda.horaAgenda.GetValueOrDefault().ToString();
                        accion       = "Agendamiento modificado";
                        idAgendaTipo = ultimaAgenda.AgendaTipo.idAgendaTipo;
                        contacto     = ultimaAgenda.contacto;
                    }
                    string respuestaDevuelta = await _fun.EnvioSmsAnterior(ultimaAgenda.AgendaTipo.modulo, ultimaAgenda.discriminadorAgendamiento,
                                                                           ultimaAgenda.contacto, codSms, fecha, hora);//enviamos el sms de agendamiento

                    if (!String.IsNullOrEmpty(respuestaDevuelta))
                    {
                        var logError = new ErrorLog();//en caso de error insertamos en la tabla de error
                        logError.errorMensaje = respuestaDevuelta;
                        logError.evento       = accion + "envio sms";
                        await _ir.Add(logError);
                    }
                    var plantilla = await _ir.Find <PlantillaCorreo>(IdPlantilla);                                                                               //obtenemos la plantilla de correo

                    await _fun.EnvioEmail(ultimaAgenda.idUsuario.GetValueOrDefault(), plantilla.Plantilla, accion, codSms, fecha, hora, idAgendaTipo, contacto); //enviamos el email

                    if (codSms == 1)
                    {
                        string observacion = "";
                        switch (ultimaAgenda.discriminadorAgendamiento)
                        {
                        case "1":
                            observacion = "Caso generado desde ecosistemas. Contacto por WhatsApp: " + ultimaAgenda.contacto;
                            break;

                        case "2":
                            observacion = "Caso generado desde ecosistemas. Contacto por Skype: " + ultimaAgenda.contacto;
                            break;

                        case "0":
                            observacion = "Caso generado desde ecosistemas. Contacto por Teléfono: " + ultimaAgenda.contacto;
                            break;
                        }
                        var urlProveedores = "";
                        var idSocio        = _fun.Base64_Encode(WebConfigurationManager.AppSettings["idSocio"].ToString());
                        var idAgenda       = _fun.Base64_Encode(ultimaAgenda.idAgenda.ToString());

                        if (ultimaAgenda.AgendaTipo.modulo == "HojaVida")
                        {
                            urlProveedores = "https://statistics.grupomok.com.co/HojaDeVida/" + idSocio + "/" + idAgenda;
                        }
                        else if (ultimaAgenda.AgendaTipo.modulo == "Entrevista")
                        {
                            urlProveedores = "https://statistics.grupomok.com.co/PruebasPsicotecnicas/" + idSocio + "/" + idAgenda;
                        }

                        observacion = observacion + ". Motivo de consulta: " + ultimaAgenda.AgendaTipo.glosaAgendaTipo + ". " + urlProveedores;

                        var fechaAgenda  = ultimaAgenda.fechaAgenda + ultimaAgenda.horaAgenda;
                        var datosMocksys = await _fun.TraeMocksys(ultimaAgenda.idUsuario.GetValueOrDefault(), ultimaAgenda.idAgendaTipo.GetValueOrDefault(), fechaAgenda.GetValueOrDefault(), ultimaAgenda.AgendaTipo.idContratoMoksys.GetValueOrDefault(), observacion);//insertamos la

                        //data en el servicio de mocksys
                        ultimaAgenda.idCasoMoksys = Convert.ToInt32(datosMocksys.Rows[0].ItemArray[0].ToString()); //obtenemos la ot de mocksys
                        await _ir.Update(ultimaAgenda, ultimaAgenda.idAgenda);                                     //y la insertamos en el agendamiento
                    }
                    respuesta.codigo  = 0;
                    respuesta.mensaje = "Mensajes enviados";
                    return(Ok(respuesta));
                }
                respuesta.codigo  = 1;
                respuesta.mensaje = "Sin agendamiento";
                return(Ok(respuesta));
            }
            catch (Exception ex)
            {
                respuesta.codigo  = 2;
                respuesta.mensaje = ex.Message;
                return(Ok(respuesta));
            }
        }