public async Task <IActionResult> OnPostAsync()
        {
            if (email == null)
            {
                Mensaje = "Debe ingresar un email para poder enviar su código de recuperación";
                return(Page());
            }
            Usuario Usuario = _context.Usuarios
                              .Include(u => u.Empleado)
                              .ThenInclude(e => e.IdPersonaNavigation)
                              .Where(u => u.Correo == email)
                              .FirstOrDefault();

            if (Usuario == null)
            {
                Mensaje = "El correo proporcionado no está vinculado a ninguna cuenta";
                return(Page());
            }
            HttpContext.Session.SetString("email", Usuario.Correo);
            string sql            = "UPDATE recuperacioncuenta r set r.Estado = @Estado Where IdUsuario = @IdUsuario ";
            var    EstadoParam    = new MySqlParameter("@Estado", "1");
            var    IdUsuarioParam = new MySqlParameter("@IdUsuario", Usuario.Id);

            _context.Database.ExecuteSqlCommand(sql, EstadoParam, IdUsuarioParam);

            string             recoveryCode = Encrypted.CreatePassword(8);
            Recuperacioncuenta rec          = new Recuperacioncuenta
            {
                IdUsuario = Usuario.Id,
                //all codes generated will be 8 characteres
                Codigo     = recoveryCode,
                FechaEnvio = DateTime.Now,
                //mark as enabled for use
                Estado            = 1,
                FechaRecuperacion = null
            };

            _context.Recuperacioncuenta.Add(rec);
            SendCodeForEmail(email, recoveryCode, Usuario);
            await _context.SaveChangesAsync();

            return(RedirectToPage("/Welcome/LoginWithCode"));
        }