feat: 회사 관리 기능 개선 및 지점 평면화 DTO 추가
- CompanyBranchFlatDto 모델 추가로 지점 데이터 처리 개선 - 회사 서비스에 브랜치 평면화 기능 추가 - 회사 폼 컨트롤러 기능 확장 - 회사 리스트 화면 UI 개선 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
@@ -262,6 +262,58 @@ class CompanyService {
|
||||
throw ServerFailure(message: 'Failed to update company status: $e');
|
||||
}
|
||||
}
|
||||
|
||||
// 회사 목록과 지점 정보를 함께 조회 (플랫 데이터를 그룹화)
|
||||
Future<List<Company>> getCompaniesWithBranchesFlat() async {
|
||||
try {
|
||||
final flatData = await _remoteDataSource.getCompanyBranchesFlat();
|
||||
|
||||
// 회사별로 데이터 그룹화
|
||||
final Map<int, List<Branch>> companyBranchesMap = {};
|
||||
final Map<int, String> companyNamesMap = {};
|
||||
|
||||
for (final item in flatData) {
|
||||
companyNamesMap[item.companyId] = item.companyName;
|
||||
|
||||
if (item.branchId != null && item.branchName != null) {
|
||||
if (!companyBranchesMap.containsKey(item.companyId)) {
|
||||
companyBranchesMap[item.companyId] = [];
|
||||
}
|
||||
companyBranchesMap[item.companyId]!.add(
|
||||
Branch(
|
||||
id: item.branchId,
|
||||
companyId: item.companyId,
|
||||
name: item.branchName!,
|
||||
address: Address.fromFullAddress(''), // 주소 정보가 없으므로 빈 값
|
||||
),
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
// Company 객체 생성
|
||||
final List<Company> companies = [];
|
||||
for (final entry in companyNamesMap.entries) {
|
||||
companies.add(
|
||||
Company(
|
||||
id: entry.key,
|
||||
name: entry.value,
|
||||
address: Address.fromFullAddress(''), // 주소 정보가 없으므로 빈 값
|
||||
companyTypes: [CompanyType.customer], // 기본값
|
||||
branches: companyBranchesMap[entry.key], // null 허용
|
||||
),
|
||||
);
|
||||
}
|
||||
|
||||
return companies;
|
||||
} on ApiException catch (e) {
|
||||
debugPrint('[CompanyService] ApiException: ${e.message}');
|
||||
throw ServerFailure(message: e.message);
|
||||
} catch (e, stackTrace) {
|
||||
debugPrint('[CompanyService] Error loading companies with branches: $e');
|
||||
debugPrint('[CompanyService] Stack trace: $stackTrace');
|
||||
throw ServerFailure(message: 'Failed to fetch companies with branches: $e');
|
||||
}
|
||||
}
|
||||
|
||||
// 변환 헬퍼 메서드들
|
||||
Company _convertListDtoToCompany(CompanyListDto dto) {
|
||||
|
||||
Reference in New Issue
Block a user