import 'package:dartz/dartz.dart'; import '../../../services/user_service.dart'; import '../../../core/errors/failures.dart'; import '../base_usecase.dart'; /// 사용자 삭제 파라미터 class DeleteUserParams { final int id; const DeleteUserParams({ required this.id, }); } /// 사용자 삭제 UseCase class DeleteUserUseCase extends UseCase { final UserService _userService; DeleteUserUseCase(this._userService); @override Future> call(DeleteUserParams params) async { try { // 자기 자신 삭제 방지 로직 필요 // 실제 구현에서는 현재 로그인한 사용자 ID와 비교 await _userService.deleteUser(params.id); return const Right(null); } catch (e) { if (e.toString().contains('찾을 수 없')) { return Left(ValidationFailure( message: '사용자를 찾을 수 없습니다.', code: 'USER_NOT_FOUND', originalError: e, )); } else if (e.toString().contains('삭제할 수 없')) { return Left(ValidationFailure( message: '해당 사용자는 삭제할 수 없습니다.', code: 'CANNOT_DELETE', originalError: e, )); } else if (e.toString().contains('권한')) { return Left(PermissionFailure( message: '사용자를 삭제할 권한이 없습니다.', code: 'PERMISSION_DENIED', originalError: e, )); } else { return Left(ServerFailure( message: '사용자 삭제 중 오류가 발생했습니다.', originalError: e, )); } } } }