'use strict'; const { parseDoorLockDataFile, writeDoorLockEvent } = require("../services/doorLock"); const { officeRnDAPIErrors } = require('../constants/constants'); const IncomingForm = require('formidable').IncomingForm; const uploadDoorLockData = (req, res) => { const form = new IncomingForm(); const parsingResults = []; form.on('file', (field, file) => { if (file && file.type === 'text/csv') { parsingResults.push(parseDoorLockDataFile(file)); } }); form.on('end', () => { Promise.all(parsingResults) .then((parserResults) => { const parsedData = []; const parserErrors = []; const unknownMembers = []; parserResults.forEach((parserResult) => { parsedData.push(...parserResult.parsedData); parserErrors.push(...parserResult.errors); unknownMembers.push(...parserResult.unknownMembers); }); res.json({ parsedData, parserErrors, unknownMembers }); parsedData.forEach((entry) => { writeDoorLockEvent(entry); }); }) .catch(() => { res.status(500).send(officeRnDAPIErrors.FAILED_TO_FETCH_MEMBERS); }); }); form.parse(req); }; module.exports = { uploadDoorLockData, };