diff options
Diffstat (limited to 'lib/vendor-data/services.ts')
| -rw-r--r-- | lib/vendor-data/services.ts | 93 |
1 files changed, 0 insertions, 93 deletions
diff --git a/lib/vendor-data/services.ts b/lib/vendor-data/services.ts index fe4e56ae..8c8b21d2 100644 --- a/lib/vendor-data/services.ts +++ b/lib/vendor-data/services.ts @@ -62,8 +62,6 @@ export async function getVendorProjectsAndContracts( itemId: contractItems.id, itemName: items.itemName, - packageCode: items.packageCode, - packageName: items.description, }) .from(contracts) .innerJoin(projects, eq(contracts.projectId, projects.id)) @@ -128,94 +126,3 @@ export async function getVendorProjectsAndContracts( return Array.from(projectMap.values()) } -interface ProjectWithPackages { - projectId: number - projectCode: string - projectName: string - projectType: "ship" | "plant" - packages: { - packageCode: string - packageName: string | null - }[] -} - -export async function getVendorProjectsWithPackages( - vendorId?: number, - projectType?: "ship" | "plant" -): Promise<ProjectWithPackages[]> { - // 세션에서 도메인 정보 가져오기 - const session = await getServerSession(authOptions) - - // EVCP 도메인일 때만 전체 조회 - const isEvcpDomain = session?.user?.domain === "evcp" - - // where 조건들을 배열로 관리 - // eslint-disable-next-line @typescript-eslint/no-explicit-any - const whereConditions: any[] = [] - - // vendorId 조건 추가 - if (!isEvcpDomain && vendorId) { - whereConditions.push(eq(contracts.vendorId, vendorId)) - } - - // projectType 조건 추가 - if (projectType) { - whereConditions.push(eq(projects.type, projectType)) - } - - const query = db - .select({ - projectId: projects.id, - projectCode: projects.code, - projectName: projects.name, - projectType: projects.type, - - packageCode: items.packageCode, - packageName: items.description, - }) - .from(contracts) - .innerJoin(projects, eq(contracts.projectId, projects.id)) - .innerJoin(contractItems, eq(contractItems.contractId, contracts.id)) - .innerJoin(items, eq(contractItems.itemId, items.id)) - - // 조건이 있으면 where 절 추가 - if (whereConditions.length > 0) { - query.where(and(...whereConditions)) - } - - const rows = await query - - const projectMap = new Map<number, ProjectWithPackages>() - - for (const row of rows) { - // 1) 프로젝트 그룹 찾기 - let projectEntry = projectMap.get(row.projectId) - if (!projectEntry) { - // 새 프로젝트 항목 생성 - projectEntry = { - projectId: row.projectId, - projectCode: row.projectCode, - projectName: row.projectName, - projectType: row.projectType, - packages: [], - } - projectMap.set(row.projectId, projectEntry) - } - - // 2) 프로젝트의 packages 배열에 패키지 추가 (중복 체크) - // packageCode가 같은 항목이 이미 존재하는지 확인 - const existingPackage = projectEntry.packages.find( - (pkg) => pkg.packageCode === row.packageCode - ) - - // 같은 packageCode가 없는 경우에만 추가 - if (!existingPackage) { - projectEntry.packages.push({ - packageCode: row.packageCode, - packageName: row.packageName, - }) - } - } - - return Array.from(projectMap.values()) -}
\ No newline at end of file |
