'use strict'; const { parseDoorLockDataFile, writeDoorLockEvent } = require("../services/doorLock"); const { fetchAllBookings, writeBookingReservation } = require('../services/officeRnD/bookings'); 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 }); fetchAllBookings() .then((bookingEntries) => { bookingEntries.forEach((bookingEntry) => writeBookingReservation(bookingEntry)); }) .catch((error) => { console.log('===> ERROR'); console.log(error); }); parsedData.forEach((entry) => { writeDoorLockEvent(entry); }); }) .catch(() => { res.status(500).send(officeRnDAPIErrors.FAILED_TO_FETCH_MEMBERS); }); }); form.parse(req); }; module.exports = { uploadDoorLockData, };