import 'package:dartz/dartz.dart'; import '../../core/errors/failures.dart'; import '../../core/utils/app_logger.dart'; import '../entities/user.dart'; import '../repositories/user_repository.dart'; /// Classe qui implémente le cas d'utilisation permettant de récupérer un utilisateur par son ID. /// Elle interagit avec le dépôt d'utilisateur pour récupérer les données utilisateur. class GetUser { /// Constructeur qui prend en paramètre un dépôt d'utilisateur. GetUser(this.repository) { AppLogger.d('Initialisation de GetUser avec le UserRepository.', tag: 'GetUser'); } final UserRepository repository; /// Méthode pour récupérer un utilisateur par son ID. /// Retourne soit un [User], soit une [Failure] en cas d'erreur. Future> call(String id) async { AppLogger.d("Appel à GetUser avec l'ID : $id", tag: 'GetUser'); // Appel au dépôt pour récupérer l'utilisateur final result = await repository.getUser(id); // Logger le résultat result.fold( (failure) => AppLogger.e('Erreur lors de la récupération de l\'utilisateur', error: failure, tag: 'GetUser'), (user) => AppLogger.d('Utilisateur récupéré avec succès : ${user.userId}', tag: 'GetUser'), ); return result; } }