const express = require('express'); const multer = require('multer'); const cors = require('cors'); const { initializeSalesforceConnection, attachPdfToAccount, splitExcelFile, splitPDF, cleanUp } = require('./services'); const app = express(); app.use(cors({ origin: 'http://localhost:5173' })); const upload = multer({ dest: 'uploads/' }); app.post('/api/documents', upload.array('documents'), async (req, res) => { const documentTitle = req.body.title; let excelFile = null; let pdfFile = null; if (req.files && req.files.length > 0) { req.files.forEach((file) => { const fileName = file.originalname.toLowerCase(); if (fileName.endsWith('.xlsx') || fileName.endsWith('.xls')) { excelFile = file.path; } else if (fileName.endsWith('.pdf')) { pdfFile = file.path; } }); } if (!documentTitle || !excelFile || !pdfFile) { if (req.files) { cleanUp(req.files.map((f) => f.path)); } return res.status(400).json({ error: !documentTitle ? 'Document title is required' : 'Both excel and pdf files are required' }); } const tempFilePath = []; try { let resultExcel = await splitExcelFile(excelFile); let resultPdf = await splitPDF(resultExcel, pdfFile, tempFilePath); await initializeSalesforceConnection(); await attachPdfToAccount(resultPdf, documentTitle); // No need to pass sfdc return res.status(200).json({ ok: true, message: 'Files uploaded successfully!' }); } catch (err) { console.error('Error in processing the files: ', err); return res.status(500).json({ ok: false, message: 'Error in processing and uploading the files' }); } finally { cleanUp(tempFilePath); cleanUp([excelFile, pdfFile]); } }); module.exports = { app };