주요 변경사항: - Company-Branch → 계층형 Company 구조 완전 마이그레이션 - Equipment 모델 필드명 표준화 (current_company_id → company_id) - DropdownButton assertion 오류 완전 해결 - 지점 추가 드롭다운 페이지네이션 문제 해결 (20개→55개 전체 표시) - Equipment 백엔드 API 데이터 활용도 40%→100% 달성 - 소프트 딜리트 시스템 안정성 향상 기술적 개선: - Branch 관련 deprecated 메서드 정리 - Equipment Status 유효성 검증 로직 추가 - Company 리스트 페이지네이션 최적화 - DTO 모델 Freezed 코드 생성 완료 - 테스트 파일 API 구조 변경 대응 성과: - Flutter 웹 빌드 성공 (컴파일 에러 0건) - 백엔드 API 호환성 95% 달성 - 시스템 안정성 및 사용자 경험 대폭 개선
55 lines
1.5 KiB
Dart
55 lines
1.5 KiB
Dart
import 'package:dartz/dartz.dart';
|
|
import '../../../services/company_service.dart';
|
|
import '../../../models/company_model.dart';
|
|
import '../../../core/errors/failures.dart';
|
|
import '../base_usecase.dart';
|
|
|
|
/// 회사 상세 조회 파라미터
|
|
class GetCompanyDetailParams {
|
|
final int id;
|
|
final bool includeBranches;
|
|
|
|
const GetCompanyDetailParams({
|
|
required this.id,
|
|
this.includeBranches = false,
|
|
});
|
|
}
|
|
|
|
/// 회사 상세 조회 UseCase
|
|
class GetCompanyDetailUseCase extends UseCase<Company, GetCompanyDetailParams> {
|
|
final CompanyService _companyService;
|
|
|
|
GetCompanyDetailUseCase(this._companyService);
|
|
|
|
@override
|
|
Future<Either<Failure, Company>> call(GetCompanyDetailParams params) async {
|
|
try {
|
|
final Company company;
|
|
|
|
if (params.includeBranches) {
|
|
company = await _companyService.getCompanyWithChildren(params.id);
|
|
} else {
|
|
company = await _companyService.getCompanyDetail(params.id);
|
|
}
|
|
|
|
return Right(company);
|
|
} on ServerFailure catch (e) {
|
|
if (e.message.contains('not found')) {
|
|
return Left(ValidationFailure(
|
|
message: '회사를 찾을 수 없습니다.',
|
|
code: 'NOT_FOUND',
|
|
originalError: e,
|
|
));
|
|
}
|
|
return Left(ServerFailure(
|
|
message: e.message,
|
|
originalError: e,
|
|
));
|
|
} catch (e) {
|
|
return Left(UnknownFailure(
|
|
message: '회사 정보를 불러오는 중 오류가 발생했습니다.',
|
|
originalError: e,
|
|
));
|
|
}
|
|
}
|
|
} |