import 'package:dartz/dartz.dart'; import '../../../services/user_service.dart'; import '../../../models/user_model.dart' as model; import '../../../core/errors/failures.dart'; import '../base_usecase.dart'; /// 사용자 상태 토글 파라미터 class ToggleUserStatusParams { final int id; const ToggleUserStatusParams({ required this.id, }); } /// 사용자 활성화/비활성화 UseCase class ToggleUserStatusUseCase extends UseCase { final UserService _userService; ToggleUserStatusUseCase(this._userService); @override Future> call(ToggleUserStatusParams params) async { try { // 자기 자신 비활성화 방지 // 실제 구현에서는 현재 로그인한 사용자 ID와 비교 final user = await _userService.toggleUserStatus(params.id); return Right(user); } catch (e) { if (e.toString().contains('자신')) { return Left(ValidationFailure( message: '자기 자신은 비활성화할 수 없습니다.', code: 'CANNOT_DEACTIVATE_SELF', originalError: e, )); } else if (e.toString().contains('찾을 수 없')) { return Left(ValidationFailure( message: '사용자를 찾을 수 없습니다.', code: 'USER_NOT_FOUND', originalError: e, )); } else if (e.toString().contains('권한')) { return Left(PermissionFailure( message: '사용자 상태를 변경할 권한이 없습니다.', code: 'PERMISSION_DENIED', originalError: e, )); } else { return Left(ServerFailure( message: '사용자 상태 변경 중 오류가 발생했습니다.', originalError: e, )); } } } }