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) => { const getUnlockedIncidents = (req, res) => {
}; };
@@ -62,4 +79,5 @@ module.exports = {
getAllIncidents, getAllIncidents,
getUnscheduledIncidents, getUnscheduledIncidents,
getUnlockedIncidents, 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 { apiStatusCheck } = require('../controllers/apiStatusCheck');
const { uploadDoorLockData } = require('../controllers/doorLock'); 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 { calculateDoorLockCharges } = require('../services/integration/doorLockCharges');
const express = require('express'); const express = require('express');
@@ -14,10 +16,13 @@ router.post('/doorLock/upload', uploadDoorLockData);
router.get('/integration/mappings', getKnownOfficeResourceMappings); router.get('/integration/mappings', getKnownOfficeResourceMappings);
router.post('/integration/mappings', addNewMapping); 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/allIncidents/:startDate/:endDate', getAllIncidents);
router.get('/integration/report/unlockedIncidents', getUnlockedIncidents); router.get('/integration/report/unlockedIncidents', getUnlockedIncidents);
router.get('/integration/report/unscheduledIncidents', getUnscheduledIncidents); router.get('/integration/report/unscheduledIncidents', getUnscheduledIncidents);
router.get('/officeRnD/membersList', fetchMembersList);
// temporary route, manually trigger door lock charge calculations // temporary route, manually trigger door lock charge calculations
router.get('/calculate', (req, res) => { calculateDoorLockCharges(); res.send();}); 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 { fetchAllMembers } = require('../officeRnD/members');
const { fetchOffices, fetchResources } = require('../officeRnD/resources'); 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 attributes = ['id', 'memberId', 'resourceId', 'bookingStart', 'bookingEnd', 'incidentLevel', 'incidentLevelPrice'];
const filters = (startDate && endDate) ? { const filters = {};
bookingStart: {
if (startDate && endDate) {
filters.bookingStart = {
[Op.and]: { [Op.and]: {
[Op.gte]: startDate.utc().toISOString(), [Op.gte]: startDate.utc().toISOString(),
[Op.lte]: endDate.utc().toISOString(), [Op.lte]: endDate.utc().toISOString(),
} }
}, }
} : null; }
if (memberId){
filters.memberId = memberId;
}
return db.unlockedIncident.findAll({ return db.unlockedIncident.findAll({
attributes, attributes,
@@ -31,7 +37,7 @@ const getUnlockedIncidents = (startDate, endDate) => {
}); });
}; };
const getUnscheduledIncidents = (startDate, endDate) => { const getUnscheduledIncidents = (startDate, endDate, memberId) => {
const attributes = [ const attributes = [
'id', 'id',
'memberId', 'memberId',
@@ -45,14 +51,20 @@ const getUnscheduledIncidents = (startDate, endDate) => {
'totalChargeFee' 'totalChargeFee'
]; ];
const filters = (startDate && endDate) ? { const filters = {};
bookingStart: {
if (startDate && endDate) {
filters.bookingStart = {
[Op.and]: { [Op.and]: {
[Op.gte]: startDate.utc().toISOString(), [Op.gte]: startDate.utc().toISOString(),
[Op.lte]: endDate.utc().toISOString(), [Op.lte]: endDate.utc().toISOString(),
} }
}, }
} : null; }
if (memberId){
filters.memberId = memberId;
}
return db.unscheduledIncident.findAll({ return db.unscheduledIncident.findAll({
attributes, attributes,
@@ -67,7 +79,7 @@ const formatTime = (timestamp) => {
return moment.tz(timestamp, UI_TIMEZONE).format('MM/DD/YYYY hh:mm a'); 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) => { return new Promise ((resolve, reject) => {
let startDate, endDate; 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) Promise.all(dataFetchJobs)
.then((data) => { .then((data) => {