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 JsonResult SolicitarCodigo(String email)
        {
            if (db.NE_Usuario.Any(x => x.CorreoElectronico.ToUpper() == email.ToUpper()))
            {
                NE_Usuario usuario   = db.NE_Usuario.Where(x => x.CorreoElectronico.ToUpper() == email.ToUpper()).First();
                Random     aleatorio = new Random();
                Int32      Code      = aleatorio.Next(100000, 999999);
                DateTime   ahora     = DateTime.Now;

                NE_AutenticacionConEmail autenticacion = new NE_AutenticacionConEmail()
                {
                    CodigoConfirmado     = false,
                    CodigoDeVerificacion = Code.ToString(),
                    Email              = email,
                    FechaDeSolicitud   = ahora,
                    FechaDeVencimiento = ahora.AddMinutes(5)
                };
                db.NE_AutenticacionConEmail.Add(autenticacion);
                db.SaveChanges();

                //fill template
                String template = db.NE_EmailTemplate.Where(x => x.Name == "Auth").First().EmailTemplate;
                template = String.Format(template, usuario.CorreoElectronico, Code.ToString(), "*****@*****.**");

                //create Instance
                Mail mail = new Mail()
                {
                    AccountServer  = Settings.ACCOUNT_SERVER,
                    Subject        = "Codigo de recuperacion",
                    From           = Settings.FROM,
                    Host           = Settings.HOST_SERVER,
                    PasswordServer = Settings.PASSWORD_SERVER,
                    Body           = template,
                    To             = new List <string>()
                    {
                        email
                    },
                    Port = Settings.PORT_SERVER
                };
                mail.Send();

                return(Json(new { Mensaje = "Se ha enviado un codigo a tu correo, en caso de no ser asi, da clic en reenviar codigo.", TipoMensaje = 1 }, JsonRequestBehavior.DenyGet));
            }
            else
            {
                return(Json(new { Mensaje = "No existe un usuario con esa cuenta, verifique el email", TipoMensaje = 2 }, JsonRequestBehavior.DenyGet));
            }
        }