public JsonResult IsEmailValid(String email)
        {
            try
            {
                if (db.NE_Usuario.Any(x => x.CorreoElectronico.ToUpper() == email.ToUpper()))
                {
                    //get user
                    NE_Usuario user = db.NE_Usuario.Where(x => x.CorreoElectronico.ToUpper() == email.ToUpper()).First();
                    //add confirmed request
                    NE_RecoveryPassword recovery = new NE_RecoveryPassword()
                    {
                        UsuarioId   = user.UsuarioId,
                        RecordDate  = DateTime.Now,
                        ExpiredDate = DateTime.Now.AddDays(1),
                        IsConfirmed = false,
                    };
                    db.NE_RecoveryPassword.Add(recovery);
                    db.SaveChanges();

                    //fill template
                    String template = db.NE_EmailTemplate.Where(x => x.Name == "RecoveryPass").First().EmailTemplate;
                    template = String.Format(template, user.Nombre + " " + user.ApellidoPaterno + " " + user.ApellidoMaterno, Settings.URL_TOConfirmEmail + recovery.RecoveryPasswordId.ToString(), "*****@*****.**");
                    //create Instance

                    Mail mail = new Mail()
                    {
                        AccountServer  = Settings.ACCOUNT_SERVER,
                        Subject        = Recursos.RestablecerPass,
                        From           = Settings.FROM,
                        Host           = Settings.HOST_SERVER,
                        PasswordServer = Settings.PASSWORD_SERVER,
                        Body           = template,
                        To             = new List <string>()
                        {
                            user.CorreoElectronico
                        },
                        Port = Settings.PORT_SERVER
                    };
                    mail.Send();

                    return(Json(new { Success = true, Message = Recursos.ConfEmail }, JsonRequestBehavior.DenyGet));
                }
                else
                {
                    return(Json(new { Success = false, Message = Recursos.ErrorEmail }, JsonRequestBehavior.DenyGet));
                }
            }
            catch (Exception ex)
            {
                return(Json(new { Success = false, Message = Recursos.MessError }, JsonRequestBehavior.DenyGet));
            }
        }
        public ActionResult Confirm(Int32 ID)
        {
            NE_RecoveryPassword model = db.NE_RecoveryPassword.Find(ID);

            ViewBag.IsConfirmValid = model.ExpiredDate > DateTime.Now;
            ViewBag.IsConfirmed    = model.IsConfirmed;

            String Message = String.Empty;

            ViewBag.ID = ID;
            //TODO: redirect to change pass
            return(View());
        }
        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));
            }
        }