handle fetching members list and members incidents list

This commit is contained in:
Bilal Catic
2019-06-18 23:59:00 +02:00
parent 785e336e55
commit 0ccd2ff55c
4 changed files with 66 additions and 13 deletions

View File

@@ -48,6 +48,23 @@ const getAllIncidents = (req, res) => {
});
};
const getMemberIncidents = (req, res) => {
const memberId = req.params.memberId;
const dateRange = {
startDate: req.params.startDate,
endDate: req.params.endDate,
};
getAllDoorLockIncidents(dateRange, memberId)
.then((incidents) => {
res.send(incidents);
})
.catch((error) => {
console.log(error);
res.send([]);
});
};
const getUnlockedIncidents = (req, res) => {
};
@@ -62,4 +79,5 @@ module.exports = {
getAllIncidents,
getUnscheduledIncidents,
getUnlockedIncidents,
getMemberIncidents,
};

18
controllers/officeRnD.js Normal file
View File

@@ -0,0 +1,18 @@
'use strict';
const { fetchAllMembers } = require('../services/officeRnD/members');
const fetchMembersList = (req, res) => {
fetchAllMembers()
.then((members) => {
res.send(members);
})
.catch((error) => {
console.log(error);
res.send([]);
});
};
module.exports = {
fetchMembersList,
};

View File

@@ -2,7 +2,9 @@
const { apiStatusCheck } = require('../controllers/apiStatusCheck');
const { uploadDoorLockData } = require('../controllers/doorLock');
const { getKnownOfficeResourceMappings, addNewMapping, getAllIncidents,getUnscheduledIncidents, getUnlockedIncidents } = require('../controllers/integration');
const { getKnownOfficeResourceMappings, addNewMapping, getAllIncidents, getMemberIncidents,getUnscheduledIncidents, getUnlockedIncidents } = require('../controllers/integration');
const { fetchMembersList } = require('../controllers/officeRnD');
const { calculateDoorLockCharges } = require('../services/integration/doorLockCharges');
const express = require('express');
@@ -14,10 +16,13 @@ router.post('/doorLock/upload', uploadDoorLockData);
router.get('/integration/mappings', getKnownOfficeResourceMappings);
router.post('/integration/mappings', addNewMapping);
router.get('/integration/report/member/:memberId/:startDate/:endDate', getMemberIncidents);
router.get('/integration/report/allIncidents/:startDate/:endDate', getAllIncidents);
router.get('/integration/report/unlockedIncidents', getUnlockedIncidents);
router.get('/integration/report/unscheduledIncidents', getUnscheduledIncidents);
router.get('/officeRnD/membersList', fetchMembersList);
// temporary route, manually trigger door lock charge calculations
router.get('/calculate', (req, res) => { calculateDoorLockCharges(); res.send();});

View File

@@ -10,17 +10,23 @@ const { incidentType, UI_TIMEZONE, DEFAULT_DATE_FORMAT, integrationServiceErrors
const { fetchAllMembers } = require('../officeRnD/members');
const { fetchOffices, fetchResources } = require('../officeRnD/resources');
const getUnlockedIncidents = (startDate, endDate) => {
const getUnlockedIncidents = (startDate, endDate, memberId) => {
const attributes = ['id', 'memberId', 'resourceId', 'bookingStart', 'bookingEnd', 'incidentLevel', 'incidentLevelPrice'];
const filters = (startDate && endDate) ? {
bookingStart: {
const filters = {};
if (startDate && endDate) {
filters.bookingStart = {
[Op.and]: {
[Op.gte]: startDate.utc().toISOString(),
[Op.lte]: endDate.utc().toISOString(),
}
},
} : null;
}
}
if (memberId){
filters.memberId = memberId;
}
return db.unlockedIncident.findAll({
attributes,
@@ -31,7 +37,7 @@ const getUnlockedIncidents = (startDate, endDate) => {
});
};
const getUnscheduledIncidents = (startDate, endDate) => {
const getUnscheduledIncidents = (startDate, endDate, memberId) => {
const attributes = [
'id',
'memberId',
@@ -45,14 +51,20 @@ const getUnscheduledIncidents = (startDate, endDate) => {
'totalChargeFee'
];
const filters = (startDate && endDate) ? {
bookingStart: {
const filters = {};
if (startDate && endDate) {
filters.bookingStart = {
[Op.and]: {
[Op.gte]: startDate.utc().toISOString(),
[Op.lte]: endDate.utc().toISOString(),
}
},
} : null;
}
}
if (memberId){
filters.memberId = memberId;
}
return db.unscheduledIncident.findAll({
attributes,
@@ -67,7 +79,7 @@ const formatTime = (timestamp) => {
return moment.tz(timestamp, UI_TIMEZONE).format('MM/DD/YYYY hh:mm a');
};
const getAllDoorLockIncidents = (dateRange) => {
const getAllDoorLockIncidents = (dateRange, memberId) => {
return new Promise ((resolve, reject) => {
let startDate, endDate;
@@ -81,7 +93,7 @@ const getAllDoorLockIncidents = (dateRange) => {
}
}
const dataFetchJobs = [fetchAllMembers(), fetchOffices(), fetchResources(), getUnlockedIncidents(startDate, endDate), getUnscheduledIncidents(startDate, endDate)];
const dataFetchJobs = [fetchAllMembers(), fetchOffices(), fetchResources(), getUnlockedIncidents(startDate, endDate, memberId), getUnscheduledIncidents(startDate, endDate, memberId)];
Promise.all(dataFetchJobs)
.then((data) => {