public ActionResult Create([Bind(Include = "UsuarioId,Nombre,ApellidoPaterno,ApellidoMaterno,SexoId,Edad,Direccion,Telefono,CorreoElectronico,Activo,RolId,Password")] NE_Usuario nE_Usuario)
        {
            ViewBag.Message = String.Empty;
            if (ModelState.IsValid)
            {
                using (DbContextTransaction dbTran = db.Database.BeginTransaction())
                {
                    NE_Autenticacion userAuth = new NE_Autenticacion();

                    try
                    {
                        if (!db.NE_Usuario.Any(x => x.CorreoElectronico.ToUpper() == nE_Usuario.CorreoElectronico.ToUpper()))
                        {
                            db.NE_Usuario.Add(nE_Usuario);
                            db.SaveChanges();
                            userAuth = new NE_Autenticacion()
                            {
                                UsuarioId          = nE_Usuario.UsuarioId,
                                Intentos           = 0,
                                CuentaBloqueada    = false,
                                Contrasena         = Security.Security.Encrypt(nE_Usuario.password),
                                UltimoInicioSesion = DateTime.Now,
                            };

                            db.NE_Autenticacion.Add(userAuth);
                            db.SaveChanges();
                            dbTran.Commit();

                            NE_Bitacora bitacora = new NE_Bitacora()
                            {
                                AccionId        = ACCION.NUEVO_REGISTRO,
                                Descripcion     = "Se ha creado al usuario: " + nE_Usuario.CorreoElectronico,
                                FechaDeRegistro = DateTime.Now,
                                UsuarioId       = nE_Usuario.UsuarioId,
                            };
                            db.NE_Bitacora.Add(bitacora);
                            db.SaveChanges();
                            ViewBag.Message = "Cuenta creada";
                            return(RedirectToAction("Index", "Login"));
                        }
                        else
                        {
                            ViewBag.Message = "Ya hay un correo registrado";
                        }
                    }
                    catch (Exception e)
                    {
                        ViewBag.Message = "La cuenta no se pudo crear";
                        return(RedirectToAction("Create", "Registro"));
                    }
                }
            }

            ViewBag.RolId  = new SelectList(db.NE_Rol, "RolId", "Rol", nE_Usuario.RolId);
            ViewBag.SexoId = new SelectList(db.NE_Sexo, "SexoId", "Sexo", nE_Usuario.SexoId);
            return(View(nE_Usuario));
        }
        public JsonResult ConfirmarCodigoLogin(String email, String codigo)
        {
            NE_Autenticacion userAuth = new NE_Autenticacion();
            NE_Usuario       user     = new NE_Usuario();
            string           pass;
            String           Message = String.Empty;

            if (db.NE_Usuario.Any(x => x.CorreoElectronico == email && x.Activo))
            {
                user = db.NE_Usuario.Where(x => x.CorreoElectronico == email).First();
                if (db.NE_AutenticacionConEmail.Any(x => !x.CodigoConfirmado && x.Email.ToUpper() == email.ToUpper()))
                {
                    NE_AutenticacionConEmail model = db.NE_AutenticacionConEmail.Where(x => !x.CodigoConfirmado && x.Email.ToUpper() == email.ToUpper()).OrderByDescending(x => x.FechaDeSolicitud).First();
                    if (DateTime.Now > model.FechaDeVencimiento)
                    {
                        return(Json(new { TipoMensaje = 2, Mensaje = "El codigo caduco , por favor de clic en reenviar para recibir otro.", UrlAredireccionar = "" }, JsonRequestBehavior.DenyGet));
                    }

                    if (model.CodigoDeVerificacion != codigo)
                    {
                        return(Json(new { TipoMensaje = 2, Mensaje = "El cofigo seleccionado no es valido", UrlAredireccionar = "" }, JsonRequestBehavior.DenyGet));
                    }

                    userAuth                    = db.NE_Autenticacion.Where(x => x.UsuarioId == user.UsuarioId).First();
                    userAuth.Intentos           = 0;
                    userAuth.UltimoInicioSesion = DateTime.Now;
                    Settings.LoggedUser         = user;
                    db.SaveChanges();

                    model.CodigoConfirmado = true;
                    db.SaveChanges();

                    NE_Bitacora bitacora = new NE_Bitacora()
                    {
                        AccionId        = ACCION.INICIO_DE_SESION,
                        Descripcion     = "el usuario : " + user.CorreoElectronico + " ha iniciado sesion",
                        FechaDeRegistro = DateTime.Now,
                        UsuarioId       = user.UsuarioId,
                    };
                    db.NE_Bitacora.Add(bitacora);
                    db.SaveChanges();

                    String url = user.RolId == 4 ? Url.Action("Index", "Principal") : Url.Action("Index", "Vehiculo");
                    return(Json(new { TipoMensaje = 1, Mensaje = String.Empty, UrlAredireccionar = url }, JsonRequestBehavior.DenyGet));
                }
                else
                {
                    return(Json(new { TipoMensaje = 2, Mensaje = "El codigo seleccionado no es correcto", UrlAredireccionar = "" }, JsonRequestBehavior.DenyGet));
                }
            }
            else
            {
                return(Json(new { TipoMensaje = 2, Mensaje = "La cuenta seleccionada no esta activa", UrlAredireccionar = "" }, JsonRequestBehavior.DenyGet));
            }
        }
        public ActionResult DeleteConfirmed(int id)
        {
            NE_Usuario       nE_Usuario       = db.NE_Usuario.Find(id);
            NE_Autenticacion nE_Autenticacion = new NE_Autenticacion();

            nE_Autenticacion = db.NE_Autenticacion.Where(x => x.UsuarioId == id).First();
            db.NE_Usuario.Remove(nE_Usuario);
            db.NE_Autenticacion.Remove(nE_Autenticacion);
            db.SaveChanges();
            return(RedirectToAction("Index"));
        }
        public JsonResult ChangePas(String newPass)
        {
            try
            {
                NE_Autenticacion auth = db.NE_Autenticacion.Where(x => x.UsuarioId == Settings.LoggedUser.UsuarioId).First();
                auth.Contrasena = Security.Security.Encrypt(newPass);
                db.SaveChanges();

                return(Json(new { Success = true }, JsonRequestBehavior.DenyGet));
            }
            catch
            {
                return(Json(new { Success = false }, JsonRequestBehavior.DenyGet));
            }
        }
        public ActionResult Edit([Bind(Include = "UsuarioId,Nombre,ApellidoPaterno,ApellidoMaterno,SexoId,Edad,Direccion,Telefono,CorreoElectronico,Activo,RolId,Password")] NE_Usuario nE_Usuario)
        {
            ViewBag.Message = String.Empty;
            if (ModelState.IsValid)
            {
                using (DbContextTransaction dbTran = db.Database.BeginTransaction())
                {
                    NE_Autenticacion userAuth = new NE_Autenticacion();
                    try
                    {
                        NE_Usuario user = new NE_Usuario();
                        user                   = db.NE_Usuario.Where(x => x.UsuarioId == nE_Usuario.UsuarioId).First();
                        user.Nombre            = nE_Usuario.Nombre;
                        user.ApellidoPaterno   = nE_Usuario.ApellidoPaterno;
                        user.ApellidoMaterno   = nE_Usuario.ApellidoMaterno;
                        user.SexoId            = nE_Usuario.SexoId;
                        user.Edad              = nE_Usuario.Edad;
                        user.Direccion         = nE_Usuario.Direccion;
                        user.Telefono          = nE_Usuario.Telefono;
                        user.CorreoElectronico = nE_Usuario.CorreoElectronico;
                        user.Activo            = nE_Usuario.Activo;
                        user.RolId             = nE_Usuario.RolId;
                        db.SaveChanges();
                        if (nE_Usuario.password != null)
                        {
                            userAuth            = db.NE_Autenticacion.Where(x => x.UsuarioId == nE_Usuario.UsuarioId).First();
                            userAuth.Contrasena = Security.Security.Encrypt(nE_Usuario.password);
                            db.SaveChanges();
                        }
                        dbTran.Commit();

                        ViewBag.Message = "Cuenta editada Correctamente";
                        return(RedirectToAction("Index", "Usuario"));
                    }
                    catch (Exception e)
                    {
                        ViewBag.Message = "La cuenta no se pudo crear";
                        return(RedirectToAction("Create", "Usuario"));
                    }
                }
            }

            ViewBag.RolId  = new SelectList(db.NE_Rol, "RolId", "Rol", nE_Usuario.RolId);
            ViewBag.SexoId = new SelectList(db.NE_Sexo, "SexoId", "Sexo", nE_Usuario.SexoId);
            return(View(nE_Usuario));
        }
        public JsonResult ChangePass(String newPass, Int32 ID)
        {
            try
            {
                NE_RecoveryPassword model = db.NE_RecoveryPassword.Find(ID);
                NE_Usuario          user  = db.NE_Usuario.Where(x => x.UsuarioId == model.UsuarioId).First();
                NE_Autenticacion    auth  = db.NE_Autenticacion.Where(x => x.UsuarioId == user.UsuarioId).First();
                model.IsConfirmed = true;
                auth.Contrasena   = Security.Security.Encrypt(newPass);
                db.SaveChanges();

                return(Json(new { Success = true }, JsonRequestBehavior.DenyGet));
            }
            catch
            {
                return(Json(new { Success = false }, JsonRequestBehavior.DenyGet));
            }
        }
        // GET: Usuario/Edit/5
        public ActionResult Edit(int?id)
        {
            if (id == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }
            NE_Usuario nE_Usuario = db.NE_Usuario.Find(id);

            if (nE_Usuario == null)
            {
                return(HttpNotFound());
            }
            ViewBag.RolId  = new SelectList(db.NE_Rol, "RolId", "Rol", nE_Usuario.RolId);
            ViewBag.SexoId = new SelectList(db.NE_Sexo, "SexoId", "Sexo", nE_Usuario.SexoId);
            NE_Autenticacion nE_auth = db.NE_Autenticacion.Where(x => x.UsuarioId == id).First();

            ViewBag.pass = nE_auth.Contrasena;
            return(View(nE_Usuario));
        }
        public ActionResult Index(LoginModel model)
        {
            NE_Autenticacion userAuth = new NE_Autenticacion();
            NE_Usuario       user     = new NE_Usuario();
            string           pass;
            String           Message = String.Empty;

            if (db.NE_Usuario.Any(x => x.CorreoElectronico == model.Email && x.Activo))
            {
                user = db.NE_Usuario.Where(x => x.CorreoElectronico == model.Email).First();
                pass = Security.Security.Encrypt(model.Password);
                if (!db.NE_Autenticacion.Any(x => x.UsuarioId == user.UsuarioId && x.Contrasena == pass))
                {
                    userAuth          = db.NE_Autenticacion.Where(x => x.UsuarioId == user.UsuarioId).First();
                    userAuth.Intentos = userAuth.Intentos + 1;
                    if (userAuth.Intentos >= 5)
                    {
                        userAuth.CuentaBloqueada = true;
                        db.SaveChanges();
                        ViewBag.Message = Recursos.CuentBloq;
                        return(View(model));
                    }
                    db.SaveChanges();
                    ViewBag.Message = Recursos.IncorrectPass;
                    return(View(model));
                }
                else
                {
                    userAuth = db.NE_Autenticacion.Where(x => x.UsuarioId == user.UsuarioId).First();
                    if (userAuth.CuentaBloqueada)
                    {
                        ViewBag.Message = Recursos.CuentBloq;
                        return(RedirectToAction("Index", "Home"));
                    }
                    else
                    {
                        user                        = db.NE_Usuario.Where(x => x.CorreoElectronico == model.Email).First();
                        userAuth                    = db.NE_Autenticacion.Where(x => x.UsuarioId == user.UsuarioId).First();
                        userAuth.Intentos           = 0;
                        userAuth.UltimoInicioSesion = DateTime.Now;
                        Settings.LoggedUser         = user;
                        db.SaveChanges();
                        ViewBag.Message = "Bienvenido" + Settings.LoggedUser.Nombre;

                        NE_Bitacora bitacora = new NE_Bitacora()
                        {
                            AccionId        = ACCION.INICIO_DE_SESION,
                            Descripcion     = "el usuario : " + user.CorreoElectronico + " ha iniciado sesion",
                            FechaDeRegistro = DateTime.Now,
                            UsuarioId       = user.UsuarioId,
                        };
                        db.NE_Bitacora.Add(bitacora);
                        db.SaveChanges();

                        if (user.RolId == 4)
                        {
                            return(RedirectToAction("Index", "Principal"));
                        }
                        if (user.RolId == 1)
                        {
                            return(RedirectToAction("Index", "Vehiculo"));
                        }

                        return(RedirectToAction("Index", "Home"));
                    }
                }
            }
            else
            {
                ViewBag.Message = Recursos.ErrorEmail;
                return(View(model));
            }
        }