import '../entities/auth_user.dart'; import '../repositories/auth_repository.dart'; /// Caso de uso: Iniciar sesión. /// Encapsula la lógica de negocio para autenticar un usuario. class LoginUseCase { final AuthRepository _repository; const LoginUseCase(this._repository); Future execute({ required String identifier, required String password, }) async { if (identifier.trim().isEmpty) { throw ArgumentError('El correo o teléfono no puede estar vacío.'); } if (password.length < 6) { throw ArgumentError('La contraseña debe tener al menos 6 caracteres.'); } return _repository.login( identifier: identifier.trim(), password: password, ); } } /// Caso de uso: Cerrar sesión. class LogoutUseCase { final AuthRepository _repository; const LogoutUseCase(this._repository); Future execute() => _repository.logout(); } /// Caso de uso: Recuperar sesión almacenada. class GetStoredSessionUseCase { final AuthRepository _repository; const GetStoredSessionUseCase(this._repository); Future execute() => _repository.getStoredSession(); }