import 'package:dartz/dartz.dart'; import '../../repositories/company_repository.dart'; import '../../../core/errors/failures.dart'; import '../base_usecase.dart'; /// 회사 상태 토글 파라미터 class ToggleCompanyStatusParams { final int id; final bool isActive; const ToggleCompanyStatusParams({ required this.id, required this.isActive, }); } /// 회사 활성화/비활성화 UseCase class ToggleCompanyStatusUseCase extends UseCase { // 레포지토리 기반으로 마이그레이션 final CompanyRepository _companyRepository; ToggleCompanyStatusUseCase(this._companyRepository); @override Future> call(ToggleCompanyStatusParams params) async { try { // 레포지토리는 토글 방식으로 동작하므로 결과만 확인 final result = await _companyRepository.toggleCompanyStatus(params.id); return result.fold( (failure) => Left(failure), (_) => const Right(null), ); } on ServerFailure catch (e) { if (e.message.contains('equipment')) { return Left(ValidationFailure( message: '활성 장비가 있는 회사는 비활성화할 수 없습니다.', code: 'HAS_ACTIVE_EQUIPMENT', )); } return Left(ServerFailure( message: e.message, )); } catch (e) { return Left(ServerFailure( message: '회사 상태 변경 중 오류가 발생했습니다.', )); } } }