71 lines
2.3 KiB
JavaScript
71 lines
2.3 KiB
JavaScript
'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
|
|
};
|