1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768 |
- import 'package:flutter/material.dart';
- import '../models/models.dart';
- import '../services/login_service.dart';
- import '../services/services.dart';
- enum Status { uninitialized, authenticated, authenticating, unauthenticated }
- class LoginViewModel extends ChangeNotifier {
- Status _status = Status.uninitialized;
- Status get status => _status;
- bool hasErrors = false;
- Map<String, dynamic>? _errores = {};
- bool _obscureText = true;
- Usuario? _usuario;
- int? _idUsuario;
- // Getters
- Usuario? get usuario => _usuario;
- Map<String, dynamic>? get errores => _errores;
- Future<void> login(String correo) async {
- try {
- print("Iniciando proceso de login para: $correo");
- List<Usuario> usuarios = await RepoService<Usuario>().obtenerTodos();
- print("Usuarios obtenidos de la base de datos: ${usuarios.length}");
- Usuario? usuario = usuarios.firstWhere(
- (usuario) => usuario.correo?.toLowerCase() == correo.toLowerCase(),
- orElse: () => Usuario(),
- );
- // Si el correo es válido
- if (usuario.id != 0) {
- print("Usuario encontrado: ${usuario.correo}, ID: ${usuario.id}");
- _status = Status.authenticated;
- _errores = null;
- _idUsuario = usuario.id;
- notifyListeners();
- } else {
- print("Correo no válido: $correo");
- hasErrors = true;
- _errores = {'correo': 'El correo no existe en el sistema'};
- _status = Status.unauthenticated;
- notifyListeners();
- }
- } catch (e) {
- print("Error durante el proceso de login: $e");
- _status = Status.unauthenticated;
- notifyListeners();
- }
- }
- void showPassword() {
- _obscureText = !_obscureText;
- notifyListeners();
- }
- void logOut() {
- print("Cerrando sesión...");
- _usuario = null;
- _idUsuario = null;
- _status = Status.unauthenticated;
- _errores = {};
- notifyListeners();
- }
- }
|