70 lines
1.8 KiB
JavaScript
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 }; |