diff options
Diffstat (limited to 'lib/forms/stat.ts')
| -rw-r--r-- | lib/forms/stat.ts | 50 |
1 files changed, 6 insertions, 44 deletions
diff --git a/lib/forms/stat.ts b/lib/forms/stat.ts index 054f2462..f13bab61 100644 --- a/lib/forms/stat.ts +++ b/lib/forms/stat.ts @@ -218,39 +218,13 @@ export async function getVendorFormStatus(projectId?: number): Promise<VendorFor -export async function getFormStatusByVendor(projectId: number, formCode: string): Promise<FormStatusByVendor[]> { +export async function getFormStatusByVendor(projectId: number, contractItemId: number, formCode: string): Promise<FormStatusByVendor[]> { try { const session = await getServerSession(authOptions) if (!session?.user?.id) { throw new Error("인증이 필요합니다.") } - const vendorStatusList: FormStatusByVendor[] = [] - const vendorId = Number(session.user.companyId) - - const vendorContracts = await db - .select({ - id: contracts.id, - projectId: contracts.projectId - }) - .from(contracts) - .where( - and( - eq(contracts.vendorId, vendorId), - eq(contracts.projectId, projectId) - ) - ) - - const contractIds = vendorContracts.map(v => v.id) - - const contractItemsList = await db - .select({ - id: contractItems.id - }) - .from(contractItems) - .where(inArray(contractItems.contractId, contractIds)) - - const contractItemIds = contractItemsList.map(v => v.id) let vendorFormCount = 0 let vendorTagCount = 0 @@ -277,7 +251,7 @@ export async function getFormStatusByVendor(projectId: number, formCode: string) .from(forms) .where( and( - inArray(forms.contractItemId, contractItemIds), + eq(forms.contractItemId, contractItemId), eq(forms.formCode, formCode) ) ) @@ -294,28 +268,16 @@ export async function getFormStatusByVendor(projectId: number, formCode: string) .from(formEntries) .where( and( - inArray(formEntries.contractItemId, contractItemIds), + eq(formEntries.contractItemId, contractItemId), eq(formEntries.formCode, formCode) ) ) // 6. TAG별 편집 가능 필드 조회 - const editableFieldsByTag = new Map<string, string[]>() - - for (const contractItemId of contractItemIds) { - const tagFields = await getEditableFieldsByTag(contractItemId, projectId) - - tagFields.forEach((fields, tagNo) => { - if (!editableFieldsByTag.has(tagNo)) { - editableFieldsByTag.set(tagNo, fields) - } else { - const existingFields = editableFieldsByTag.get(tagNo) || [] - const mergedFields = [...new Set([...existingFields, ...fields])] - editableFieldsByTag.set(tagNo, mergedFields) - } - }) - } + const editableFieldsByTag = await getEditableFieldsByTag(contractItemId, projectId) + const vendorStatusList: VendorFormStatus[] = [] + for (const entry of entriesList) { const metaResult = await db .select({ |
