summaryrefslogtreecommitdiff
path: root/lib/vendor-regular-registrations/handlers.ts
diff options
context:
space:
mode:
Diffstat (limited to 'lib/vendor-regular-registrations/handlers.ts')
-rw-r--r--lib/vendor-regular-registrations/handlers.ts56
1 files changed, 45 insertions, 11 deletions
diff --git a/lib/vendor-regular-registrations/handlers.ts b/lib/vendor-regular-registrations/handlers.ts
index 4b21263d..95acde23 100644
--- a/lib/vendor-regular-registrations/handlers.ts
+++ b/lib/vendor-regular-registrations/handlers.ts
@@ -6,19 +6,20 @@
'use server';
-import { submitRegistrationRequest } from './service';
+import { sendRegistrationRequestToMDG } from './service';
import { debugLog, debugError, debugSuccess } from '@/lib/debug-utils';
import type { RegistrationRequestData } from '@/components/vendor-regular-registrations/registration-request-dialog';
import db from '@/db/db';
import { eq } from 'drizzle-orm';
import { vendors } from '@/db/schema/vendors';
-import { vendorAdditionalInfo } from '@/db/schema/vendorRegistrations';
+import { vendorAdditionalInfo, vendorRegularRegistrations } from '@/db/schema/vendorRegistrations';
/**
- * 정규업체 등록 핸들러 (결재 승인 후 실행됨)
- *
+ * 정규업체 등록 핸들러 (결재 승인 후 MDG 전송 실행)
+ *
+ * 결재 승인 후 자동으로 MDG로 정규업체 등록 요청을 전송함
* 이 함수는 직접 호출하지 않고, 결재 워크플로우에서 자동으로 호출됨
- *
+ *
* @param payload - withApproval()에서 전달한 actionPayload
*/
export async function registerVendorInternal(payload: {
@@ -31,28 +32,61 @@ export async function registerVendorInternal(payload: {
});
try {
- // 실제 정규업체 등록 처리
- debugLog('[VendorRegistrationHandler] submitRegistrationRequest 호출');
- const result = await submitRegistrationRequest(
+ // 1. MDG로 정규업체 등록 요청 데이터 전송
+ debugLog('[VendorRegistrationHandler] sendRegistrationRequestToMDG 호출');
+ const mdgResult = await sendRegistrationRequestToMDG(
payload.registrationId,
payload.requestData
);
- if (!result.success) {
- debugError('[VendorRegistrationHandler] 정규업체 등록 실패', result.error);
- throw new Error(result.error || '정규업체 등록에 실패했습니다.');
+ if (!mdgResult.success) {
+ debugError('[VendorRegistrationHandler] MDG 전송 실패', mdgResult.error);
+
+ // MDG 전송 실패 시 상태를 registration_failed로 변경
+ await db.update(vendorRegularRegistrations)
+ .set({
+ status: 'registration_failed',
+ updatedAt: new Date()
+ })
+ .where(eq(vendorRegularRegistrations.id, payload.registrationId));
+
+ throw new Error(mdgResult.error || 'MDG 전송에 실패했습니다.');
}
+ // 3. MDG 전송 성공 시 상태를 registration_completed로 변경
+ debugLog('[VendorRegistrationHandler] MDG 전송 성공, 상태를 registration_completed로 변경');
+ await db.update(vendorRegularRegistrations)
+ .set({
+ status: 'registration_completed',
+ updatedAt: new Date()
+ })
+ .where(eq(vendorRegularRegistrations.id, payload.registrationId));
+
debugSuccess('[VendorRegistrationHandler] 정규업체 등록 완료', {
registrationId: payload.registrationId,
+ mdgResult: mdgResult
});
return {
success: true,
message: '정규업체 등록이 완료되었습니다.',
+ mdgResult: mdgResult
};
} catch (error) {
debugError('[VendorRegistrationHandler] 정규업체 등록 중 에러', error);
+
+ // 에러 발생 시 상태를 registration_failed로 변경
+ try {
+ await db.update(vendorRegularRegistrations)
+ .set({
+ status: 'registration_failed',
+ updatedAt: new Date()
+ })
+ .where(eq(vendorRegularRegistrations.id, payload.registrationId));
+ } catch (updateError) {
+ debugError('[VendorRegistrationHandler] 상태 업데이트 실패', updateError);
+ }
+
throw error;
}
}