import { requireAuth } from '~/server/utils/auth'; import { getMinioClient } from '~/server/utils/minio'; import { getInterestById, updateInterest } from '~/server/utils/nocodb'; export default defineEventHandler(async (event) => { // Check authentication (x-tag header OR Keycloak session) await requireAuth(event); console.log('[EOI Delete] Request received'); try { const body = await readBody(event); const { interestId } = body; console.log('[EOI Delete] Interest ID:', interestId); if (!interestId) { console.error('[EOI Delete] No interest ID provided'); throw createError({ statusCode: 400, statusMessage: 'Interest ID is required', }); } // Get current interest data to find EOI documents const interest = await getInterestById(interestId); const eoiDocuments = interest['EOI Document'] || []; console.log('[EOI Delete] Found EOI documents:', eoiDocuments); // Delete all EOI documents from MinIO const client = getMinioClient(); for (const doc of eoiDocuments) { const filename = (doc as any).filename; if (filename) { try { console.log('[EOI Delete] Deleting file from MinIO:', filename); await client.removeObject('client-portal', filename); console.log('[EOI Delete] Successfully deleted:', filename); } catch (error: any) { console.error('[EOI Delete] Failed to delete file:', filename, error); // Continue with other files even if one fails } } } // Reset interest fields const updateData = { 'EOI Status': 'Awaiting Further Details', 'Sales Process Level': 'Specific Qualified Interest', 'EOI Document': undefined, '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('[EOI Delete] Resetting interest fields'); // Update the interest await updateInterest(interestId, updateData as any); console.log('[EOI Delete] Delete completed successfully'); return { success: true, message: 'EOI document deleted successfully', }; } catch (error: any) { console.error('[EOI Delete] Failed to delete EOI document:', error); console.error('[EOI Delete] Error stack:', error.stack); throw createError({ statusCode: 500, statusMessage: error.message || 'Failed to delete EOI document', }); } });