summaryrefslogtreecommitdiff
path: root/lib/vendors/table/request-pq-dialog.tsx
diff options
context:
space:
mode:
Diffstat (limited to 'lib/vendors/table/request-pq-dialog.tsx')
-rw-r--r--lib/vendors/table/request-pq-dialog.tsx46
1 files changed, 45 insertions, 1 deletions
diff --git a/lib/vendors/table/request-pq-dialog.tsx b/lib/vendors/table/request-pq-dialog.tsx
index 767b979f..aeb0c717 100644
--- a/lib/vendors/table/request-pq-dialog.tsx
+++ b/lib/vendors/table/request-pq-dialog.tsx
@@ -39,7 +39,7 @@ import { Input } from "@/components/ui/input"
import { Badge } from "@/components/ui/badge"
import { Progress } from "@/components/ui/progress"
import { Vendor } from "@/db/schema/vendors"
-import { requestBasicContractInfo, requestPQVendors } from "../service"
+import { requestBasicContractInfo, requestPQVendors, sendBasicContractEmail } from "../service"
import { getProjectsWithPQList } from "@/lib/pq/service"
import type { Project } from "@/lib/pq/service"
import { useSession } from "next-auth/react"
@@ -364,6 +364,14 @@ export function RequestPQDialog({ vendors, showTrigger = true, onSuccess, ...pro
setProgressValue((completedSteps / totalSteps) * 100)
}
}
+ //5단계: 각 협력업체들에게 기본계약서 이메일 발송
+ if (selectedTemplateIds.length > 0) {
+ setCurrentStep(`기본계약서 이메일 발송 중... (${selectedTemplateIds.length}개 템플릿)`)
+ console.log("📋 기본계약서 이메일 발송 시작", selectedTemplateIds.length, "개 템플릿")
+ await processBasicContractsEmail(selectedTemplateIds, vendors)
+ completedSteps++
+ setProgressValue((completedSteps / totalSteps) * 100)
+ }
setCurrentStep("완료!")
setProgressValue(100)
@@ -506,6 +514,7 @@ export function RequestPQDialog({ vendors, showTrigger = true, onSuccess, ...pro
}
console.log(`✅ 기본계약 생성 완료: ${template.templateName}`)
+
} finally {
// 임시 WebViewer 정리
@@ -601,6 +610,41 @@ export function RequestPQDialog({ vendors, showTrigger = true, onSuccess, ...pro
}
}
+ const processBasicContractsEmail = async (templateIds: number[], vendors: any[]) => {
+ if (!session?.user?.id) {
+ toast.error("인증 정보가 없습니다")
+ return
+ }
+ try {
+ const vendorIds = vendors.map(v => v.id)
+ const userId = Number(session.user.id)
+
+ // 2. 성공한 템플릿이 있으면 이메일 발송
+ if (templateIds.length > 0) {
+ const emailResult = await sendBasicContractEmail({
+ vendorIds,
+ templateIds,
+ requestedBy: userId
+ })
+
+ if (emailResult.success) {
+ toast.success(`${templateIds.length}개 템플릿에 대한 기본계약서가 생성되었고, ${vendorIds.length}개 협력업체에 이메일이 발송되었습니다`)
+ } else {
+ toast.warning(`계약서는 생성되었으나 일부 이메일 발송 실패: ${emailResult.error}`)
+ }
+ } else {
+ toast.error("기본계약서 생성에 실패했습니다")
+ }
+
+ } catch (error) {
+ console.error('기본계약서 이메일 발송 중 오류:', error)
+ toast.error(`기본계약서 이메일 발송 중 오류가 발생했습니다: ${error instanceof Error ? error.message : '알 수 없는 오류'}`)
+ }
+}
+
+
+
+
const dialogContent = (
<div className="space-y-4 py-2">
{/* 선택된 협력업체 정보 */}