diff options
| author | dujinkim <dujin.kim@dtsolution.co.kr> | 2025-09-26 09:57:24 +0000 |
|---|---|---|
| committer | dujinkim <dujin.kim@dtsolution.co.kr> | 2025-09-26 09:57:24 +0000 |
| commit | 8b23b471638a155fd1bfa3a8c853b26d9315b272 (patch) | |
| tree | 47353e9dd342011cb2f1dcd24b09661707a8421b /lib/vendors/service.ts | |
| parent | d62368d2b68d73da895977e60a18f9b1286b0545 (diff) | |
(대표님) 권한관리, 문서업로드, rfq첨부, SWP문서룰 등
(최겸) 입찰
Diffstat (limited to 'lib/vendors/service.ts')
| -rw-r--r-- | lib/vendors/service.ts | 34 |
1 files changed, 34 insertions, 0 deletions
diff --git a/lib/vendors/service.ts b/lib/vendors/service.ts index f4ba815c..e6a2a139 100644 --- a/lib/vendors/service.ts +++ b/lib/vendors/service.ts @@ -34,6 +34,8 @@ import { countVendorMaterials, selectVendorMaterials, insertVendorMaterial, + getVendorContactById, + updateVendorContactById, } from "./repository"; @@ -42,6 +44,7 @@ import type { GetVendorsSchema, GetVendorContactsSchema, CreateVendorContactSchema, + UpdateVendorContactSchema, GetVendorItemsSchema, CreateVendorItemSchema, GetRfqHistorySchema, @@ -635,6 +638,8 @@ export async function createVendorContact(input: CreateVendorContactSchema) { vendorId: input.vendorId, contactName: input.contactName, contactPosition: input.contactPosition || "", + contactDepartment: input.contactDepartment || "", + contactTask: input.contactTask || "", contactEmail: input.contactEmail, contactPhone: input.contactPhone || "", isPrimary: input.isPrimary || false, @@ -651,6 +656,35 @@ export async function createVendorContact(input: CreateVendorContactSchema) { } } +export async function updateVendorContact(id: number, input: UpdateVendorContactSchema) { + unstable_noStore(); // Next.js 서버 액션 캐싱 방지 + try { + const vendorContact = await getVendorContactById(id); + if (!vendorContact) { + return { data: null, error: "Contact not found" }; + } + + await db.transaction(async (tx) => { + // DB Update + await updateVendorContactById(tx, id, { + contactName: input.contactName, + contactPosition: input.contactPosition, + contactDepartment: input.contactDepartment, + contactTask: input.contactTask, + contactEmail: input.contactEmail, + contactPhone: input.contactPhone, + isPrimary: input.isPrimary, + }); + }); + + // 캐시 무효화 (협력업체 연락처 목록 등) + revalidateTag(`vendor-contacts-${vendorContact.vendorId}`); + + return { data: null, error: null }; + } catch (err) { + return { data: null, error: getErrorMessage(err) }; + } +} ///item |
