diff --git a/server/api/eoi/delete-document.ts b/server/api/eoi/delete-document.ts index 45bc2ac..9cc741b 100644 --- a/server/api/eoi/delete-document.ts +++ b/server/api/eoi/delete-document.ts @@ -66,9 +66,7 @@ export default defineEventHandler(async (event) => { 'EmbeddedSignatureLinkClient': undefined, 'EmbeddedSignatureLinkCC': undefined, 'EmbeddedSignatureLinkDeveloper': undefined, - 'Documeso ID': undefined, - 'documensoID': undefined, - 'reminder_enabled': false + 'documensoID': undefined }; console.log('[EOI Delete] Resetting interest fields'); diff --git a/server/api/eoi/delete-generated-document.ts b/server/api/eoi/delete-generated-document.ts index 723d326..980edf8 100644 --- a/server/api/eoi/delete-generated-document.ts +++ b/server/api/eoi/delete-generated-document.ts @@ -133,8 +133,7 @@ export default defineEventHandler(async (event) => { 'EmbeddedSignatureLinkClient': undefined, 'EmbeddedSignatureLinkCC': undefined, 'EmbeddedSignatureLinkDeveloper': undefined, - 'documensoID': undefined, - 'reminder_enabled': false + 'documensoID': undefined }; console.log('[Delete Generated EOI] Resetting interest fields'); diff --git a/server/api/test-eoi-cleanup.ts b/server/api/test-eoi-cleanup.ts new file mode 100644 index 0000000..d0928e5 --- /dev/null +++ b/server/api/test-eoi-cleanup.ts @@ -0,0 +1,139 @@ +export default defineEventHandler(async (event) => { + const xTagHeader = getRequestHeader(event, "x-tag"); + + if (!xTagHeader || (xTagHeader !== "094ut234" && xTagHeader !== "pjnvü1230")) { + throw createError({ statusCode: 401, statusMessage: "unauthenticated" }); + } + + try { + const query = getQuery(event); + const { interestId } = query; + + if (!interestId) { + throw createError({ + statusCode: 400, + statusMessage: 'Interest ID is required', + }); + } + + console.log('[Test EOI Cleanup] Starting cleanup test for interest:', interestId); + + // First, check current state + const beforeUpdate = await getInterestById(interestId.toString()); + console.log('[Test EOI Cleanup] BEFORE UPDATE - Current state:', { + documensoID: beforeUpdate['documensoID'], + signatureLinks: { + client: beforeUpdate['Signature Link Client'], + cc: beforeUpdate['Signature Link CC'], + developer: beforeUpdate['Signature Link Developer'] + }, + embeddedLinks: { + client: beforeUpdate['EmbeddedSignatureLinkClient'], + cc: beforeUpdate['EmbeddedSignatureLinkCC'], + developer: beforeUpdate['EmbeddedSignatureLinkDeveloper'] + }, + eoiStatus: beforeUpdate['EOI Status'], + salesLevel: beforeUpdate['Sales Process Level'] + }); + + // Prepare the cleanup data - trying different approaches + const cleanupData = { + 'EOI Status': 'Awaiting Further Details' as EOIStatus, + 'Sales Process Level': 'Specific Qualified Interest' as InterestSalesProcessLevel, + 'EOI Time Sent': undefined, + 'Signature Link Client': undefined, + 'Signature Link CC': undefined, + 'Signature Link Developer': undefined, + 'EmbeddedSignatureLinkClient': undefined, + 'EmbeddedSignatureLinkCC': undefined, + 'EmbeddedSignatureLinkDeveloper': undefined, + 'documensoID': undefined + }; + + console.log('[Test EOI Cleanup] Cleanup data to send:', cleanupData); + + // Perform the update + await updateInterest(interestId.toString(), cleanupData); + + console.log('[Test EOI Cleanup] Update completed, checking result...'); + + // Check the state after update + const afterUpdate = await getInterestById(interestId.toString()); + console.log('[Test EOI Cleanup] AFTER UPDATE - New state:', { + documensoID: afterUpdate['documensoID'], + signatureLinks: { + client: afterUpdate['Signature Link Client'], + cc: afterUpdate['Signature Link CC'], + developer: afterUpdate['Signature Link Developer'] + }, + embeddedLinks: { + client: afterUpdate['EmbeddedSignatureLinkClient'], + cc: afterUpdate['EmbeddedSignatureLinkCC'], + developer: afterUpdate['EmbeddedSignatureLinkDeveloper'] + }, + eoiStatus: afterUpdate['EOI Status'], + salesLevel: afterUpdate['Sales Process Level'] + }); + + // Compare before and after + const changes = { + documensoID: { + before: beforeUpdate['documensoID'], + after: afterUpdate['documensoID'], + changed: beforeUpdate['documensoID'] !== afterUpdate['documensoID'] + }, + signatureLinks: { + client: { + before: beforeUpdate['Signature Link Client'], + after: afterUpdate['Signature Link Client'], + changed: beforeUpdate['Signature Link Client'] !== afterUpdate['Signature Link Client'] + }, + cc: { + before: beforeUpdate['Signature Link CC'], + after: afterUpdate['Signature Link CC'], + changed: beforeUpdate['Signature Link CC'] !== afterUpdate['Signature Link CC'] + }, + developer: { + before: beforeUpdate['Signature Link Developer'], + after: afterUpdate['Signature Link Developer'], + changed: beforeUpdate['Signature Link Developer'] !== afterUpdate['Signature Link Developer'] + } + }, + embeddedLinks: { + client: { + before: beforeUpdate['EmbeddedSignatureLinkClient'], + after: afterUpdate['EmbeddedSignatureLinkClient'], + changed: beforeUpdate['EmbeddedSignatureLinkClient'] !== afterUpdate['EmbeddedSignatureLinkClient'] + }, + cc: { + before: beforeUpdate['EmbeddedSignatureLinkCC'], + after: afterUpdate['EmbeddedSignatureLinkCC'], + changed: beforeUpdate['EmbeddedSignatureLinkCC'] !== afterUpdate['EmbeddedSignatureLinkCC'] + }, + developer: { + before: beforeUpdate['EmbeddedSignatureLinkDeveloper'], + after: afterUpdate['EmbeddedSignatureLinkDeveloper'], + changed: beforeUpdate['EmbeddedSignatureLinkDeveloper'] !== afterUpdate['EmbeddedSignatureLinkDeveloper'] + } + } + }; + + console.log('[Test EOI Cleanup] Change analysis:', changes); + + return { + success: true, + message: 'EOI cleanup test completed', + before: beforeUpdate, + after: afterUpdate, + changes, + cleanupData + }; + + } catch (error: any) { + console.error('[Test EOI Cleanup] Failed:', error); + throw createError({ + statusCode: error.statusCode || 500, + statusMessage: error.statusMessage || error.message || 'Failed to test EOI cleanup', + }); + } +}); diff --git a/server/utils/nocodb.ts b/server/utils/nocodb.ts index 2d04516..f58ddd3 100644 --- a/server/utils/nocodb.ts +++ b/server/utils/nocodb.ts @@ -140,7 +140,13 @@ export const updateInterest = async (id: string, data: Partial, retryC continue; } - cleanData[field] = value; + // Handle clearing fields - NocoDB requires null for clearing, not undefined + if (value === undefined) { + cleanData[field] = null; + console.log(`[nocodb.updateInterest] Converting undefined to null for field: ${field}`); + } else { + cleanData[field] = value; + } } }