import { getMinioClient } from '~/server/utils/minio';

export default defineEventHandler(async (event) => {
  const xTagHeader = getRequestHeader(event, "x-tag");

  console.log('[EOI Delete] Request received with x-tag:', xTagHeader);

  if (!xTagHeader || (xTagHeader !== "094ut234" && xTagHeader !== "pjnvü1230")) {
    console.error('[EOI Delete] Authentication failed - invalid x-tag');
    throw createError({ statusCode: 401, statusMessage: "unauthenticated" });
  }

  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 $fetch(`/api/get-interest-by-id`, {
      headers: {
        'x-tag': xTagHeader,
      },
      params: {
        id: 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 $fetch('/api/update-interest', {
      method: 'POST',
      headers: {
        'x-tag': xTagHeader,
      },
      body: {
        id: interestId,
        data: updateData
      }
    });
    
    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',
    });
  }
});
