diff options
Diffstat (limited to 'lib/vendors/service.ts')
| -rw-r--r-- | lib/vendors/service.ts | 66 |
1 files changed, 66 insertions, 0 deletions
diff --git a/lib/vendors/service.ts b/lib/vendors/service.ts index 0c61c270..76193eb9 100644 --- a/lib/vendors/service.ts +++ b/lib/vendors/service.ts @@ -1983,6 +1983,72 @@ export async function rejectVendors(input: ApproveVendorsInput & { userId: numbe * * 예: PQ-240520-00001, PQ-240520-00002, ... */ +// 벤더의 연락처 조회 (간단 버전) +// 추후 Pq요청 내 업체담당자 선택 기능 +export async function getVendorContactsSimple(vendorId: number) { + return unstable_cache( + async () => { + try { + const contacts = await db + .select({ + id: vendorContacts.id, + contactName: vendorContacts.contactName, + contactPosition: vendorContacts.contactPosition, + contactEmail: vendorContacts.contactEmail, + contactPhone: vendorContacts.contactPhone, + isPrimary: vendorContacts.isPrimary, + createdAt: vendorContacts.createdAt, + }) + .from(vendorContacts) + .where(eq(vendorContacts.vendorId, vendorId)) + .orderBy(desc(vendorContacts.isPrimary), desc(vendorContacts.createdAt)); + + return { success: true, data: contacts }; + } catch (error) { + logger.error('벤더 연락처 조회 실패:', error); + return { success: false, error: getErrorMessage(error) }; + } + }, + [`vendor-contacts-simple-${vendorId}`], + { revalidate: 300 } // 5분 캐시 + )(); +} + +// 벤더의 PQ 히스토리 조회 +export async function getVendorPQHistory(vendorId: number) { + return unstable_cache( + async () => { + try { + const pqHistory = await db + .select({ + id: vendorPQSubmissions.id, + pqNumber: vendorPQSubmissions.pqNumber, + type: vendorPQSubmissions.type, + projectId: vendorPQSubmissions.projectId, + status: vendorPQSubmissions.status, + dueDate: vendorPQSubmissions.dueDate, + createdAt: vendorPQSubmissions.createdAt, + updatedAt: vendorPQSubmissions.updatedAt, + projectCode: projects.code, + projectName: projects.name, + pqItems: vendorPQSubmissions.pqItems, + }) + .from(vendorPQSubmissions) + .leftJoin(projects, eq(vendorPQSubmissions.projectId, projects.id)) + .where(eq(vendorPQSubmissions.vendorId, vendorId)) + .orderBy(desc(vendorPQSubmissions.createdAt)); + + return { success: true, data: pqHistory }; + } catch (error) { + logger.error('벤더 PQ 히스토리 조회 실패:', error); + return { success: false, error: getErrorMessage(error) }; + } + }, + [`vendor-pq-history-${vendorId}`], + { revalidate: 300 } // 5분 캐시 + )(); +} + export async function generatePQNumber(isProject: boolean = false) { try { // 현재 날짜 가져오기 |
