summaryrefslogtreecommitdiff
path: root/lib/vendor-data
diff options
context:
space:
mode:
Diffstat (limited to 'lib/vendor-data')
-rw-r--r--lib/vendor-data/services.ts93
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