From 803fed2bcf9ed1add503d4fefa923d547044f8a8 Mon Sep 17 00:00:00 2001 From: Bilal Catic Date: Sat, 15 Jun 2019 14:46:13 +0200 Subject: [PATCH] calculate dlock charges on dlock file upload. Refactor member lookup --- controllers/doorLock.js | 35 ++++++++++++++++++++--------------- services/doorLock/doorLock.js | 5 +++-- services/officeRnD/members.js | 12 +++--------- 3 files changed, 26 insertions(+), 26 deletions(-) diff --git a/controllers/doorLock.js b/controllers/doorLock.js index 68db008..6e9626f 100644 --- a/controllers/doorLock.js +++ b/controllers/doorLock.js @@ -30,34 +30,39 @@ const uploadDoorLockData = (req, res) => { unknownMembers.push(...parserResult.unknownMembers); }); - const asyncJobs = []; + const asyncWriteJobs = []; - fetchAllBookings() - .then((bookingEntries) => { - bookingEntries.forEach((bookingEntry) => asyncJobs.push(writeBookingReservation(bookingEntry))); - }) - .catch((error) => { - res.status(500).send(error); - return; - }); + parsedData.forEach((entry) => asyncWriteJobs.push(writeDoorLockEvent(entry))); - parsedData.forEach((entry) => asyncJobs.push(writeDoorLockEvent(entry))); - - Promise.all(asyncJobs) + Promise.all(asyncWriteJobs) .then(() => { res.json({ parsedData, parserErrors, unknownMembers }); - - calculateDoorLockCharges(); }) .catch((error) => { - console.log(`${integrationServiceErrors.FAILED_TO_SAVE_BOOKINGS} or ${integrationServiceErrors.FAILED_TO_SAVE_DOOR_LOCK_ENTRIES}`) + console.log(integrationServiceErrors.FAILED_TO_SAVE_DOOR_LOCK_ENTRIES); console.log(error); res.status(500).send(integrationServiceErrors.FAILED_TO_SAVE_DATA_GENERIC); }); + + fetchAllBookings() + .then((bookingEntries) => { + const asyncJobs = []; + bookingEntries.forEach((bookingEntry) => asyncJobs.push(writeBookingReservation(bookingEntry))); + + Promise.all(asyncJobs) + .then(() => { + calculateDoorLockCharges(); + }); + }) + .catch((error) => { + console.log(integrationServiceErrors.FAILED_TO_SAVE_BOOKINGS); + console.log(error); + return; + }); }) .catch((error) => { res.status(500).send(error); diff --git a/services/doorLock/doorLock.js b/services/doorLock/doorLock.js index 233df5d..c59c6e7 100644 --- a/services/doorLock/doorLock.js +++ b/services/doorLock/doorLock.js @@ -15,7 +15,7 @@ const { csvParserErrors, } = require('../../constants/constants'); -const { fetchAllMembers, findMember } = require('../officeRnD/members'); +const { fetchAllMembers } = require('../officeRnD/members'); const { getMappingsFromDatabase } = require('../officeRnD/resources'); const extractMappingFromFileName = (fileName) => { @@ -46,6 +46,7 @@ const parseDoorLockDataFile = (file) => { Promise.all(prefetchDataJobs) .then(result => { const mappings = result[0]; + const allMembers = result[1]; const mappingFromFileName = extractMappingFromFileName(file.name); const mappingObject = checkIfMappingExsists(mappingFromFileName, mappings); @@ -103,7 +104,7 @@ const parseDoorLockDataFile = (file) => { const secondEntry = results[i+1]; if (firstEntry && (firstEntry.event === USER_ENTRY_EVENT)){ - const memberObject = findMember(firstEntry.name); + const memberObject = allMembers.find(member => member.name === firstEntry.name); if (!memberObject){ //Check if member is already labeled as unknown diff --git a/services/officeRnD/members.js b/services/officeRnD/members.js index e45b776..44359fe 100644 --- a/services/officeRnD/members.js +++ b/services/officeRnD/members.js @@ -2,20 +2,19 @@ const { API } = require('../../helpers/api'); -const membersList = []; - const fetchAllMembers = () => { return new Promise((resolve, reject) => { API.get('/members') .then((result) => { + const cleanedResult = []; const members = result.data || []; members.forEach((member) => { - membersList.push({ + cleanedResult.push({ name: member.name, memberId: member['_id'], }); }); - resolve(); + resolve(cleanedResult); }) .catch((error) => { reject(error); @@ -23,11 +22,6 @@ const fetchAllMembers = () => { }); }; -const findMember = (memberName) => { - return membersList.find((member) => member.name === memberName); -}; - module.exports = { fetchAllMembers, - findMember, };