Fix for loading
This commit is contained in:
70
services/officeRnD/fees.js
Normal file
70
services/officeRnD/fees.js
Normal file
@@ -0,0 +1,70 @@
|
||||
'use strict';
|
||||
|
||||
const moment = require('moment-timezone');
|
||||
|
||||
const { API } = require('../../helpers/api');
|
||||
const { officeRnDAPIErrors, DEFAULT_DATE_FORMAT } = require('../../constants/constants');
|
||||
|
||||
const deleteFeesFromORD = (dateRange, memberIds) => {
|
||||
return new Promise((resolve, reject) => {
|
||||
const startDate = moment.utc(dateRange.startDate, DEFAULT_DATE_FORMAT).startOf('day');
|
||||
const endDate = moment.utc(dateRange.endDate, DEFAULT_DATE_FORMAT).endOf('day');
|
||||
|
||||
API.get('fees')
|
||||
.then((response) => {
|
||||
const fetchedFees = response.data ? response.data : [];
|
||||
|
||||
const memberIdsMap = {};
|
||||
memberIds.forEach((memberId) => {
|
||||
memberIdsMap[memberId] = true;
|
||||
});
|
||||
|
||||
const deleteRequests = [];
|
||||
const sendDeleteRequestPromise = (feeId) => {
|
||||
return new Promise((resolve, reject) => {
|
||||
API.delete(`fees/${feeId}`)
|
||||
.then(() => resolve(true))
|
||||
.catch(() => resolve(false));
|
||||
});
|
||||
};
|
||||
|
||||
fetchedFees.forEach((fee) => {
|
||||
const { member, date } = fee;
|
||||
const feeId = fee['_id'];
|
||||
|
||||
const isDateInDateRange = startDate.isSameOrBefore(date) && endDate.isSameOrAfter(date);
|
||||
if (memberIdsMap[member] && isDateInDateRange) {
|
||||
deleteRequests.push(sendDeleteRequestPromise(feeId));
|
||||
}
|
||||
});
|
||||
|
||||
Promise.all(deleteRequests)
|
||||
.then(() => {
|
||||
resolve(true);
|
||||
})
|
||||
.catch((error) => {
|
||||
reject(error);
|
||||
});
|
||||
})
|
||||
.catch((error) => {
|
||||
console.log(error);
|
||||
reject(officeRnDAPIErrors.FAILED_TO_FETCH_FEES);
|
||||
});
|
||||
});
|
||||
};
|
||||
|
||||
const addFeesToORD = (allFees) => {
|
||||
return new Promise((resolve, reject) => {
|
||||
API.post('/fees', allFees)
|
||||
.catch((error) => {
|
||||
console.log('==== ERROR ====');
|
||||
console.log(error);
|
||||
});
|
||||
resolve(allFees.length);
|
||||
});
|
||||
};
|
||||
|
||||
module.exports = {
|
||||
deleteFeesFromORD,
|
||||
addFeesToORD
|
||||
};
|
||||
@@ -12,6 +12,7 @@ const fetchAllMembers = () => {
|
||||
cleanedResult.push({
|
||||
name: member.name,
|
||||
memberId: member['_id'],
|
||||
teamId: member.team,
|
||||
});
|
||||
});
|
||||
cleanedResult.sort((member1, member2) => (member1.name > member2.name) ? 1 : -1 );
|
||||
|
||||
@@ -45,6 +45,30 @@ const fetchResources = () => {
|
||||
});
|
||||
};
|
||||
|
||||
const getResourceMappings = () => {
|
||||
return new Promise((resolve, reject) => {
|
||||
const fetchJobs = [fetchOffices(), fetchResources()];
|
||||
|
||||
Promise.all(fetchJobs)
|
||||
.then((mappings) => {
|
||||
const offices = mappings[0];
|
||||
const resources = mappings[1];
|
||||
|
||||
const officesMap = {};
|
||||
const resourcesMap = {};
|
||||
|
||||
offices.forEach((office) => officesMap[office.officeId] = office);
|
||||
resources.forEach((resource) => resourcesMap[resource.resourceId] = resource);
|
||||
|
||||
resolve({
|
||||
officesMap,
|
||||
resourcesMap,
|
||||
});
|
||||
})
|
||||
.catch((error) => reject(error));
|
||||
});
|
||||
};
|
||||
|
||||
const getMappingsFromDatabase = () => {
|
||||
return db.officeResourceMapping.findAll();
|
||||
};
|
||||
@@ -57,5 +81,6 @@ module.exports = {
|
||||
getMappingsFromDatabase,
|
||||
fetchOffices,
|
||||
fetchResources,
|
||||
getResourceMappings,
|
||||
saveNewMappingToDatabase,
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user