summaryrefslogtreecommitdiff
path: root/lib/forms
diff options
context:
space:
mode:
Diffstat (limited to 'lib/forms')
-rw-r--r--lib/forms/stat.ts50
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({