82 lines
2.6 KiB
TypeScript
82 lines
2.6 KiB
TypeScript
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',
|
|
});
|
|
}
|
|
});
|