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