import 'package:dartz/dartz.dart'; import 'package:afterwork/domain/entities/user.dart'; import 'package:afterwork/domain/repositories/user_repository.dart'; import 'package:afterwork/core/errors/failures.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 { final UserRepository repository; // Référence au dépôt d'utilisateur /// Constructeur qui prend en paramètre un dépôt d'utilisateur. GetUser(this.repository) { print("Initialisation de GetUser avec le UserRepository."); } /// 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 { print("Appel à GetUser avec l'ID : $id"); try { // Appel au dépôt pour récupérer l'utilisateur final user = await repository.getUser(id); print("Utilisateur récupéré avec succès : ${user.userId}"); return Right(user); } catch (e) { print("Erreur lors de la récupération de l'utilisateur : $e"); return Left(ServerFailure()); } } }