Exemple #1
0
        //Cierra la sesion la limipia y asi pueda retornar a login y no pueda navegar dentro del sistema
        public ActionResult CerrarSesion()
        {
            //var idUsuarioActual = Convert.ToInt32(Session["user_usuarioid"]);
            //var buscarUsuario = context.users.FirstOrDefault(x=>x.user_id==idUsuarioActual);
            //if (buscarUsuario!=null) {
            //    if (Session["id_sesion_asesor"]!=null) {
            //        var id_sesion_asesor = Convert.ToInt32(Session["id_sesion_asesor"]);
            //        var buscaSesionAsesor = context.sesion_logasesor.FirstOrDefault(x=>x.id==id_sesion_asesor);
            //        if (buscaSesionAsesor!=null) {
            //            buscaSesionAsesor.fecha_termina = DateTime.Now;
            //            context.Entry(buscaSesionAsesor).State = EntityState.Modified;
            //        }
            //    }
            //    buscarUsuario.sesion = false;
            //    context.Entry(buscarUsuario).State = EntityState.Modified;
            //    context.SaveChanges();
            //}
            int idUsuarioActual = Convert.ToInt32(Session["user_usuarioid"]);

            if (idUsuarioActual != 0)
            {
                sesion_logasesor lastConection = context.sesion_logasesor.OrderByDescending(x => x.fecha_inicia)
                                                 .FirstOrDefault(x => x.user_id == idUsuarioActual);
                if (lastConection != null)
                {
                    lastConection.fecha_termina        = DateTime.Now;
                    lastConection.estado               = 4; // 4 es el estado en db como desconectado
                    context.Entry(lastConection).State = EntityState.Modified;
                    int guardar = context.SaveChanges();
                }
            }


            Session["user_usuario"] = null;
            Session.Abandon();
            Session.Clear();
            Session.RemoveAll();
            return(RedirectToAction("Login", "login"));
        }
Exemple #2
0
        public ActionResult login(LoginModel objUsu)
        {
            try
            {
                if (ModelState.IsValid)
                {
                    MD5CryptoServiceProvider md5 = new MD5CryptoServiceProvider();
                    md5.ComputeHash(Encoding.ASCII.GetBytes(objUsu.user_password));
                    byte[]        result = md5.Hash;
                    StringBuilder str    = new StringBuilder();
                    for (int i = 0; i < result.Length; i++)
                    {
                        str.Append(result[i].ToString("x2"));
                    }

                    string pass = str.ToString();
                    users  obj  = context.users
                                  .Where(a => a.user_usuario.Equals(objUsu.user_usuario) && a.user_password.Equals(pass))
                                  .FirstOrDefault();
                    if (obj != null)
                    {
                        Session["user_usuario"]   = obj.user_nombre;
                        Session["user_usuarioid"] = obj.user_id.ToString();
                        Session["user_rolid"]     = obj.rol_id.ToString();

                        if (Session["user_usuario"] == null && obj == null)
                        {
                            CerrarSesion();
                            Session.Abandon();
                        }
                        else if (Session["user_usuario"] != null && obj != null && obj != null && obj.user_estado)
                        {
                            //borro los intentos fallidos de acceso del usuario del día de hoy
                            DateTime diahoy = DateTime.Now.Date;

                            System.Collections.Generic.List <intentos_fallidos_login> cuantosintentos = context.intentos_fallidos_login
                                                                                                        .Where(d => d.id_usuario == obj.user_id && d.fecha >= diahoy).ToList();
                            if (cuantosintentos.Count() > 0)
                            {
                                foreach (intentos_fallidos_login item in cuantosintentos)
                                {
                                    context.Entry(item).State = EntityState.Deleted;
                                }

                                context.SaveChanges();
                            }

                            //pregunto si va a cambiarcontraseña
                            if (obj.cambio_contrasena)
                            {
                                TempData["claveExpiro"] = "Debe cambiar la contraseña para poder ingresar al sistema";
                                return(View());
                            }

                            //Cuando el usuario escribe sus credenciales correctamente
                            // Primero buscamos la ultima conexion que ha tenido antes de agregar la aque abrira en este momento
                            int            idUsuarioActual = Convert.ToInt32(Session["user_usuarioid"]);
                            icb_sessionlog buscaAcceso     = context.icb_sessionlog.Where(x => x.id_usuario == idUsuarioActual)
                                                             .OrderByDescending(x => x.fecha_ingreso).FirstOrDefault();
                            if (buscaAcceso != null)
                            {
                                Session["user_ultimoacceso"] =
                                    buscaAcceso.fecha_ingreso.ToShortDateString() + " " +
                                    buscaAcceso.fecha_ingreso.ToShortTimeString();
                            }
                            else
                            {
                                Session["user_ultimoacceso"] = "";
                            }

                            context.icb_sessionlog.Add(new icb_sessionlog
                            {
                                estado        = true,
                                fecha_ingreso = DateTime.Now,
                                fecha_fin     = DateTime.Now,
                                id_usuario    = Convert.ToInt32(Session["user_usuarioid"])
                            });
                            context.SaveChanges();

                            //var buscarBodegasUsuario = context.bodega_usuario.Where(x => x.id_usuario == obj.user_id).ToList();
                            int va = 0;
                            var buscarBodegasUsuario = (from bodegaUsuario in context.bodega_usuario
                                                        join bodega in context.bodega_concesionario
                                                        on bodegaUsuario.id_bodega equals bodega.id
                                                        where bodegaUsuario.id_usuario == obj.user_id
                                                        select new
                            {
                                bodegaUsuario.id_bodega,
                                bodega.bodccs_nombre
                            }).ToList();
                            if (buscarBodegasUsuario.Count == 0)
                            {
                                if (va == 0)
                                {
                                    TempData["mensajeError"] =
                                        "El usuario no está asignado a ninguna bodega";
                                    return(RedirectToAction("login", "Login"));
                                }
                            }
                            else if (buscarBodegasUsuario.Count > 1)
                            {
                                TempData["variasBodegas"] = "Usuario asignado a varias bodegas";
                                return(View());
                            }


                            Session["user_bodegaNombre"] = buscarBodegasUsuario.Count > 0
                                ? buscarBodegasUsuario.FirstOrDefault().bodccs_nombre
                                : null;
                            Session["user_bodega"] = buscarBodegasUsuario.Count > 0
                                ? buscarBodegasUsuario.FirstOrDefault().id_bodega.ToString()
                                : null;

                            va = validarApertura(Convert.ToInt32(Session["user_bodega"]),
                                                 Convert.ToInt32(Session["user_usuarioid"]));
                            if (va == 0)
                            {
                                TempData["mesCerrado"] =
                                    "Mes se encuentra cerrado y el usuario no tiene permiso para abrirlo";
                                return(RedirectToAction("login", "Login"));
                            }

                            if (va == 2)
                            {
                                return(RedirectToAction("Index", "abrirMes"));
                            }

                            #region el mes esta abierto, se validan los roles y el usuario ingresa

                            if (va == 1)
                            {
                                // Validacion cuando el ususario tiene rol de ANFITRION TALLER
                                //if (obj.rol_id == 2024)
                                //{
                                //    return RedirectToAction("inicioAnfitrionTaller", "Inicio");
                                //}

                                //// Validacion cuando el ususario tiene rol de TECNICO
                                //if (obj.rol_id == 1014)
                                //{
                                //    return RedirectToAction("inicioTecnico", "Inicio");
                                //}

                                //// Validacion cuando el ususario tiene rol de PERITO
                                //if (obj.rol_id == 3)
                                //{
                                //    return RedirectToAction("Agendar", "peritaje");
                                //}

                                //// El rol 7 pertenece a anfitriona
                                //if (obj.rol_id == 7)
                                //{
                                //    return RedirectToAction("Create", "prospectos");
                                //}

                                //// Validacion cuando el ususario tiene rol de MENSAJERO
                                //if (obj.rol_id == 2038)
                                //{
                                //    return RedirectToAction("Index", "agendaMensajero");
                                //}

                                //Si rol user quiere decir que es asesor
                                if (obj.rols.clasificacion_rol == 3)
                                {
                                    sesion_logasesor buscarSesion = context.sesion_logasesor.OrderByDescending(x => x.id).Where(x =>
                                                                                                                                x.user_id == obj.user_id &&
                                                                                                                                x.fecha_inicia.Year == DateTime.Now.Year &&
                                                                                                                                x.fecha_inicia.Month == DateTime.Now.Month &&
                                                                                                                                x.fecha_inicia.Day == DateTime.Now.Day //&&x.estado==4
                                                                                                                                ).FirstOrDefault();

                                    if (buscarSesion != null)
                                    {
                                        // Si se encuentra en estado 4 significa que esta desconectado
                                        if (buscarSesion.estado == 4 ||
                                            buscarSesion.fecha_inicia.Year != DateTime.Now.Year ||
                                            buscarSesion.fecha_inicia.Month != DateTime.Now.Month ||
                                            buscarSesion.fecha_inicia.Day != DateTime.Now.Day)
                                        {
                                            sesion_logasesor nuevaSesion = new sesion_logasesor
                                            {
                                                estado        = 1,
                                                fecha_inicia  = DateTime.Now,
                                                fecha_termina = DateTime.Now,
                                                user_id       = obj.user_id,
                                                bodega        = Convert.ToInt32(Session["user_bodega"])
                                            };
                                            context.sesion_logasesor.Add(nuevaSesion);
                                            obj.sesion = true;
                                            context.Entry(obj).State = EntityState.Modified;
                                            int guardaLogSesion = context.SaveChanges();
                                            if (guardaLogSesion > 0)
                                            {
                                                sesion_logasesor ultimaSesion = context.sesion_logasesor.OrderByDescending(x => x.id)
                                                                                .FirstOrDefault();
                                                Session["id_sesion_asesor"] = ultimaSesion.id;
                                            }

                                            //Session["user_rol"] = "asesor";
                                        }
                                    }
                                    else
                                    {
                                        sesion_logasesor nuevaSesion = new sesion_logasesor
                                        {
                                            estado        = 1,
                                            fecha_inicia  = DateTime.Now,
                                            fecha_termina = DateTime.Now,
                                            user_id       = obj.user_id,
                                            bodega        = Convert.ToInt32(Session["user_bodega"])
                                        };
                                        context.sesion_logasesor.Add(nuevaSesion);
                                        context.SaveChanges();
                                        sesion_logasesor ultimaSesion = context.sesion_logasesor.OrderByDescending(x => x.id)
                                                                        .FirstOrDefault();
                                        Session["id_sesion_asesor"] = ultimaSesion.id;
                                    }

                                    //return RedirectToAction("inicioAsesor", "Inicio");
                                }
                            }

                            #endregion

                            //// Actualmente el valor del rol asesor corresponde al id 4 de la tabla roles
                            //var buscarRolAsesor = context.icb_sysparameter.FirstOrDefault(x=>x.syspar_cod=="P29");
                            //var idRol = buscarRolAsesor != null ? buscarRolAsesor.syspar_value : "4";
                            //var rolUser = obj.rol_id == Convert.ToInt32(idRol) ? true : false;

                            int  calcularDias     = ConsultarDiasCambioContrasena(obj);
                            rols buscarDiasDelRol = context.rols.FirstOrDefault(x => x.rol_id == obj.rol_id);
                            if (calcularDias > buscarDiasDelRol.dias_expiracion_clave)
                            {
                                TempData["claveExpiro"] = "Contraseña se vencio";
                                return(View());
                            }

                            return(RedirectToAction("Inicio", "inicio"));
                        }
                        else
                        {
                            TempData["mensajeError"] = "Usuario se encuentra inactivo";
                        }
                    }
                    else
                    {
                        // El usuario o la contrasenia esta mal escrito
                        TempData["mensajeError"] = "Usuario o contraseña incorrectos";
                        DateTime fechadehoy = DateTime.Now.Date;

                        //busco el usuario si existe
                        users usuexiste = context.users.Where(d => d.user_usuario == objUsu.user_usuario)
                                          .FirstOrDefault();
                        if (usuexiste != null)
                        {
                            intentos_fallidos_login nuevointentofallido = new intentos_fallidos_login
                            {
                                fecha      = DateTime.Now,
                                id_usuario = usuexiste.user_id
                            };
                            context.intentos_fallidos_login.Add(nuevointentofallido);
                            int guardado = context.SaveChanges();
                            //veo cuantos intentos tiene el día de hoy;
                            int cuantosintentos = context.intentos_fallidos_login
                                                  .Where(d => d.id_usuario == usuexiste.user_id && d.fecha >= fechadehoy).Count();
                            if (cuantosintentos > 2)
                            {
                                usuexiste.user_estado          = false;
                                context.Entry(usuexiste).State = EntityState.Modified;
                                context.SaveChanges();
                                TempData["mensajeError"] =
                                    "Usuario o contraseña incorrectos. Ha excedido el límite máximo de intentos. Su cuenta ha sido bloqueada. Por favor contacte con un administrador";
                            }
                        }
                    }
                }
            }
            catch (ArgumentNullException)
            {
                TempData["mensajeError"] = "Usuario o contraseña incorrectos";
            }

            return(View());
        }
Exemple #3
0
        public JsonResult cancelarProspecto(bool atendido, int?idAlerta, bool?recibioNoti)
        {
            //var buscarTercero = context.alertaasesor.OrderByDescending(x=>x.id).FirstOrDefault(x=>x.propecto==id);
            alertaasesor buscarTercero = context.alertaasesor.FirstOrDefault(x => x.id == idAlerta);

            if (buscarTercero != null)
            {
                //int usuario = Convert.ToInt32(Session["user_usuarioid"]);
                //int rol = Convert.ToInt32(Session["user_rolid"]);
                sesion_logasesor ultimaSesionAsesor = context.sesion_logasesor.OrderByDescending(x => x.id)
                                                      .FirstOrDefault(x => x.user_id == buscarTercero.asesor);
                if (ultimaSesionAsesor != null)
                {
                    ultimaSesionAsesor.fecha_inicia  = DateTime.Now;
                    ultimaSesionAsesor.fecha_termina = DateTime.Now;
                }

                if (atendido == false)
                {
                    // Se cambia el turno del asesor para que no se asigne a la siguiente persona prospecto porque perdio el turno por no atender al que se le asigno
                    //if (ultimaSesionAsesor != null-------)
                    //{
                    ultimaSesionAsesor.estado = 1;

                    context.Entry(ultimaSesionAsesor).State = EntityState.Modified;
                    //buscarTercero.aprobado = atendido;
                    //}

                    if (buscarTercero.recibido == true || buscarTercero.recibido == false && recibioNoti == true)
                    {
                        // Se cambia la alerta para que al rol anfitriona le aparezca un alerta para que asigne otro asesor al prospecto
                        buscarTercero.recibido   = true;
                        buscarTercero.aprobado   = false;
                        buscarTercero.rechazado  = true;
                        buscarTercero.reasignado = true;
                        //if (rol == 7)
                        //{
                        //    buscarTercero.cancelado = true;
                        //}
                        context.Entry(buscarTercero).State = EntityState.Modified;

                        int        terceroProspecto = buscarTercero.propecto;
                        prospectos prospectoID      = context.prospectos.FirstOrDefault(x => x.idtercero == terceroProspecto);
                        int        prospecto_ID     = Convert.ToInt32(prospectoID.id);
                        asignacion asignado         = context.asignacion.OrderByDescending(x => x.id)
                                                      .FirstOrDefault(x => x.idProspecto == prospecto_ID);

                        asignado.estado               = false;
                        asignado.fechaFin             = DateTime.Now;
                        context.Entry(asignado).State = EntityState.Modified;

                        int guardar = context.SaveChanges();
                        if (guardar > 0)
                        {
                            return(Json(
                                       new { success = false, error_message = "El usuario sera atendido por otro asesor" },
                                       JsonRequestBehavior.AllowGet));
                        }
                    }
                    else
                    {
                        return(Json(
                                   new
                        {
                            success = false,
                            error_message =
                                "El usuario ya fue asignado a otro asesor por superar limite de tiempo ausente"
                        }, JsonRequestBehavior.AllowGet));
                    }
                }
            }

            return(Json(new { success = false, error_message = "La notificacion no fue encontrada" },
                        JsonRequestBehavior.AllowGet));
        }
Exemple #4
0
        public ActionResult ValidarBodega(int?id)
        {
            int    va = 0;
            string bodegaActualUsuario = Request["bodega_id"];

            Session["user_bodega"]       = bodegaActualUsuario;
            Session["user_bodegaNombre"] = Request["bodega_nombre"];

            va = validarApertura(Convert.ToInt32(Session["user_bodega"]), Convert.ToInt32(Session["user_usuarioid"]));

            string rol = Convert.ToString(Session["user_rolid"]);

            if (va == 0)
            {
                TempData["mesCerrado"] = "Mes se encuentra cerrado y el usuario no tiene permiso para abrirlo";
                return(RedirectToAction("login", "Login"));
            }

            if (va == 2)
            {
                return(RedirectToAction("Index", "abrirMes"));
            }

            if (va == 1)
            {
                //verifico el tipo de rol
                //if (rol == "3")
                //{
                //    return RedirectToAction("Agendar", "peritaje");
                //}

                //if (rol == "2024")
                //{
                //    return RedirectToAction("inicioAnfitrionTaller", "Inicio");
                //}
                //veo si el rol es productivo
                var idrl = Convert.ToInt32(rol);
                var rolx = context.rols.Where(d => d.rol_id == idrl).FirstOrDefault();
                //if (rol == "4" || rol == "2030")
                if (rolx.clasificacion_rol == 3)
                {
                    int usuarioActualId           = Convert.ToInt32(Session["user_usuarioid"]);
                    sesion_logasesor buscarSesion = context.sesion_logasesor.OrderByDescending(x => x.fecha_inicia).Where(x =>
                                                                                                                          x.user_id == usuarioActualId &&
                                                                                                                          x.fecha_inicia.Year == DateTime.Now.Year &&
                                                                                                                          x.fecha_inicia.Month == DateTime.Now.Month &&
                                                                                                                          x.fecha_inicia.Day == DateTime.Now.Day //&&x.estado==4
                                                                                                                          ).FirstOrDefault();

                    if (buscarSesion != null)
                    {
                        if (buscarSesion.bodega.ToString() != bodegaActualUsuario)
                        {
                            sesion_logasesor nuevaSesion = new sesion_logasesor
                            {
                                estado        = buscarSesion.estado,
                                fecha_inicia  = DateTime.Now,
                                fecha_termina = DateTime.Now,
                                user_id       = usuarioActualId,
                                bodega        = bodegaActualUsuario != null?Convert.ToInt32(bodegaActualUsuario) : 0
                            };
                            context.sesion_logasesor.Add(nuevaSesion);
                            int guardaLogSesion = context.SaveChanges();
                            if (guardaLogSesion > 0)
                            {
                                sesion_logasesor ultimaSesion = context.sesion_logasesor.OrderByDescending(x => x.id)
                                                                .FirstOrDefault();
                                Session["id_sesion_asesor"] = ultimaSesion.id;
                            }
                        }

                        // Si se encuentra en estado 4 significa que esta desconectado
                        if (buscarSesion.estado == 4 || buscarSesion.fecha_inicia.Year != DateTime.Now.Year ||
                            buscarSesion.fecha_inicia.Month != DateTime.Now.Month ||
                            buscarSesion.fecha_inicia.Day != DateTime.Now.Day)
                        {
                            sesion_logasesor nuevaSesion = new sesion_logasesor
                            {
                                estado        = 1,
                                fecha_inicia  = DateTime.Now,
                                fecha_termina = DateTime.Now,
                                user_id       = usuarioActualId,
                                bodega        = bodegaActualUsuario != null?Convert.ToInt32(bodegaActualUsuario) : 0
                            };
                            context.sesion_logasesor.Add(nuevaSesion);
                            //obj.sesion = true;
                            //context.Entry(obj).State = EntityState.Modified;
                            int guardaLogSesion = context.SaveChanges();
                            if (guardaLogSesion > 0)
                            {
                                sesion_logasesor ultimaSesion = context.sesion_logasesor.OrderByDescending(x => x.id)
                                                                .FirstOrDefault();
                                Session["id_sesion_asesor"] = ultimaSesion.id;
                            }

                            //Session["user_rol"] = "asesor";
                        }
                    }
                    else
                    {
                        sesion_logasesor nuevaSesion = new sesion_logasesor
                        {
                            estado        = 1,
                            fecha_inicia  = DateTime.Now,
                            fecha_termina = DateTime.Now,
                            user_id       = usuarioActualId,
                            bodega        = bodegaActualUsuario != null?Convert.ToInt32(bodegaActualUsuario) : 0
                        };
                        context.sesion_logasesor.Add(nuevaSesion);
                        context.SaveChanges();
                        sesion_logasesor ultimaSesion = context.sesion_logasesor.OrderByDescending(x => x.id).FirstOrDefault();
                        Session["id_sesion_asesor"] = ultimaSesion.id;
                    }

                    //  return RedirectToAction("inicioAsesor", "Inicio");
                }

                //if (rol == "7")
                //{
                //    return RedirectToAction("Create", "prospectos");
                //}
            }

            return(RedirectToAction("inicio", "Inicio"));
        }
Exemple #5
0
        public JsonResult AtenderUsuario(int?id, bool?atendido, int?idAlerta)
        {
            alertaasesor buscarAlerta  = context.alertaasesor.FirstOrDefault(x => x.id == idAlerta);
            icb_terceros buscarTercero = context.icb_terceros.FirstOrDefault(x => x.tercero_id == buscarAlerta.propecto);

            if (buscarAlerta != null)
            {
                int usuario = Convert.ToInt32(Session["user_usuarioid"]);
                //para atender a un nuevo usuario todas las demas sesiones que tengan prospecto deben cerrarse
                sesion_logasesor ultimaSesionAsesor = context.sesion_logasesor.OrderByDescending(x => x.id)
                                                      .FirstOrDefault(x => x.user_id == usuario);
                if (ultimaSesionAsesor != null)
                {
                    ultimaSesionAsesor.fecha_inicia  = DateTime.Now;
                    ultimaSesionAsesor.fecha_termina = DateTime.Now;
                    if (ultimaSesionAsesor.estado != 4)
                    {
                        ultimaSesionAsesor.estado = 4;
                    }
                }

                #region atendido false

                if (atendido == false)
                {
                    //creo una nueva sesion
                    sesion_logasesor nuevaSesionAsesor = new sesion_logasesor
                    {
                        bodega        = ultimaSesionAsesor.bodega,
                        estado        = 1,
                        fecha_inicia  = DateTime.Now,
                        fecha_termina = DateTime.Now.AddMinutes(5),
                        user_id       = ultimaSesionAsesor.user_id,
                    };
                    context.sesion_logasesor.Add(nuevaSesionAsesor);
                    buscarAlerta.aprobado = atendido;
                    context.Entry(ultimaSesionAsesor).State = EntityState.Modified;

                    if (buscarAlerta.recibido == false)
                    {
                        int guardar = 0;
                        // Se cambia la alerta para que al rol anfitriona le aparezca un alerta para que asigne otro asesor al prospecto
                        buscarAlerta.recibido             = true;
                        buscarAlerta.reasignado           = true;
                        buscarAlerta.rechazado            = true;
                        context.Entry(buscarAlerta).State = EntityState.Modified;
                        guardar = context.SaveChanges();

                        prospectos prospectoID  = context.prospectos.FirstOrDefault(x => x.idtercero == buscarAlerta.propecto);
                        int        prospecto_ID = Convert.ToInt32(prospectoID.id);
                        asignacion asignado     = context.asignacion.OrderByDescending(x => x.id)
                                                  .FirstOrDefault(x => x.idProspecto == prospecto_ID && x.idAsesor == usuario);

                        asignado.estado               = false;
                        asignado.fechaFin             = DateTime.Now;
                        context.Entry(asignado).State = EntityState.Modified;
                        guardar = context.SaveChanges();

                        if (guardar > 0)
                        {
                            return(Json(
                                       new { success = false, error_message = "El usuario sera atendido por otro asesor" },
                                       JsonRequestBehavior.AllowGet));
                        }
                    }
                    else
                    {
                        return(Json(
                                   new
                        {
                            success = false,
                            error_message =
                                "El usuario ya fue asignado a otro asesor por superar limite de tiempo ausente"
                        }, JsonRequestBehavior.AllowGet));
                    }
                }

                #endregion

                #region atendido true

                if (atendido == true)
                {
                    if (buscarAlerta.recibido == false)
                    {
                        //
                        if (ultimaSesionAsesor != null)
                        {
                            int idProspecto = (from p in context.prospectos
                                               join t in context.icb_terceros
                                               on p.idtercero equals t.tercero_id
                                               where p.idtercero == id
                                               select p.id).FirstOrDefault();

                            sesion_logasesor nuevaSesionAsesor = new sesion_logasesor
                            {
                                bodega        = ultimaSesionAsesor.bodega,
                                estado        = 2,
                                fecha_inicia  = DateTime.Now,
                                fecha_termina = DateTime.Now.AddMinutes(5),
                                user_id       = ultimaSesionAsesor.user_id,
                                idprospecto   = idProspecto,
                            };
                            context.sesion_logasesor.Add(nuevaSesionAsesor);
                            context.Entry(ultimaSesionAsesor).State = EntityState.Modified;

                            prospectos prospecto =
                                context.prospectos.FirstOrDefault(x => x.idtercero == buscarAlerta.propecto);
                            int        prospecto_ID = Convert.ToInt32(prospecto.id);
                            asignacion asignado     = context.asignacion.OrderByDescending(x => x.id)
                                                      .FirstOrDefault(x => x.idProspecto == prospecto_ID && x.idAsesor == usuario);

                            asignado.estado = true;
                            //asignado.fechaFin = DateTime.Now;
                            context.Entry(asignado).State = EntityState.Modified;

                            buscarTercero.asesor_id            = usuario;
                            context.Entry(buscarTercero).State = EntityState.Modified;

                            prospecto.asesor_id            = usuario;
                            context.Entry(prospecto).State = EntityState.Modified;

                            context.SaveChanges();
                        }

                        buscarAlerta.aprobado = atendido;
                        buscarAlerta.recibido = atendido;

                        context.Entry(buscarAlerta).State = EntityState.Modified;
                        int guardar = context.SaveChanges();
                        if (guardar > 0)
                        {
                            return(Json(new { success = true }, JsonRequestBehavior.AllowGet));
                        }
                    }
                    else
                    {
                        if (ultimaSesionAsesor != null)
                        {
                            sesion_logasesor nuevaSesionAsesor = new sesion_logasesor
                            {
                                bodega        = ultimaSesionAsesor.bodega,
                                estado        = 1,
                                fecha_inicia  = DateTime.Now,
                                fecha_termina = DateTime.Now.AddMinutes(5),
                                user_id       = ultimaSesionAsesor.user_id,
                            };
                            context.sesion_logasesor.Add(nuevaSesionAsesor);
                            context.Entry(ultimaSesionAsesor).State = EntityState.Modified;
                            context.SaveChanges();
                        }

                        return(Json(
                                   new
                        {
                            success = false,
                            error_message =
                                "El usuario ya fue asignado a otro asesor por superar limite de tiempo ausente"
                        }, JsonRequestBehavior.AllowGet));
                    }
                }

                #endregion
            }

            return(Json(new { success = false, error_message = "La notificacion no fue encontrada" },
                        JsonRequestBehavior.AllowGet));
        }