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 GetUsersParams { final int page; final int perPage; final bool? isActive; final int? companyId; final String? role; const GetUsersParams({ this.page = 1, this.perPage = 20, this.isActive, this.companyId, this.role, }); } /// 사용자 목록 조회 UseCase /// 필터링 및 페이지네이션 지원 class GetUsersUseCase extends UseCase, GetUsersParams> { final UserService _userService; GetUsersUseCase(this._userService); @override Future>> call(GetUsersParams params) async { try { // 권한 검증 (관리자, 매니저만 사용자 목록 조회 가능) // 실제 구현에서는 현재 사용자 권한 체크 필요 final users = await _userService.getUsers( page: params.page, perPage: params.perPage, isActive: params.isActive, companyId: params.companyId, role: params.role, ); return Right(users); } catch (e) { if (e.toString().contains('권한')) { return Left(PermissionFailure( message: '사용자 목록을 조회할 권한이 없습니다.', code: 'PERMISSION_DENIED', originalError: e, )); } else if (e.toString().contains('네트워크')) { return Left(NetworkFailure( message: '네트워크 연결을 확인해주세요.', originalError: e, )); } else { return Left(ServerFailure( message: '사용자 목록을 불러오는 중 오류가 발생했습니다.', originalError: e, )); } } } }