public async Task <ActionResult> ResetPassword(ResetPasswordViewModel model)
        {
            if (!ModelState.IsValid)
            {
                return(View(model));
            }
            var user = await UserManager.FindByNameAsync(model.Email);

            if (user == null)
            {
                // No revelar que el usuario no existe
                return(RedirectToAction("ResetPasswordConfirmation", "Account"));
            }
            var VerificacionCodigo = RecuperacionContrasenaControlador.ConsultaRecuperacionContrasena(user.Id, model.Code);

            if (VerificacionCodigo != null)
            {
                var result = await UserManager.ResetPasswordAsync(user.Id, model.Code, model.Password);

                if (result.Succeeded)
                {
                    RecuperacionContrasenaControlador.EliminarRecuperacion(user.Id);
                    GestorCorreo.EmailCambioContrasena(model.Email);
                    return(RedirectToAction("ResetPasswordConfirmation", "Account"));
                }
                AddErrors(result);
            }

            return(View());
        }
        public async Task <ActionResult> ForgotPassword(ForgotPasswordViewModel model)
        {
            if (ModelState.IsValid)
            {
                var user = await UserManager.FindByNameAsync(model.Email);

                if (user != null)
                {
                    //Para obtener más información sobre cómo habilitar la confirmación de cuentas y el restablecimiento de contraseña, visite https://go.microsoft.com/fwlink/?LinkID=320771
                    //Enviar correo electrónico con este vínculo
                    string code = await UserManager.GeneratePasswordResetTokenAsync(user.Id);

                    RecuperacionContrasenaViewModel Recuperacion = new RecuperacionContrasenaViewModel();
                    Recuperacion.IdUser = user.Id;
                    Recuperacion.Token  = code;
                    RecuperacionContrasenaControlador.NuevaRecuperacionContrasena(Recuperacion);
                    var callbackUrl = Url.Action("ResetPassword", "Account", new { userId = user.Id, code = code }, protocol: Request.Url.Scheme);
                    GestorCorreo.EmailRecuperacionContrasena(model.Email, callbackUrl);
                    //await UserManager.SendEmailAsync(user.Id, "Restablecer contraseña", "Para restablecer la contraseña, haga clic <a href=\"" + callbackUrl + "\">aquí</a>");

                    // No revelar que el usuario no existe o que no está confirmado
                    //return View("ForgotPasswordConfirmation");
                }
                return(RedirectToAction("ForgotPasswordConfirmation", "Account"));
            }

            // Si llegamos a este punto, es que se ha producido un error y volvemos a mostrar el formulario
            return(View(model));
        }