Files
app/backend/src/app.js
T
2026-08-11 15:14:02 +02:00

70 lines
1.8 KiB
JavaScript

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 };