Files
old-crm-integration/services/officeRnD/fees.js

66 lines
2.1 KiB
JavaScript
Raw Normal View History

2019-07-25 06:53:32 +02:00
'use strict';
const moment = require('moment-timezone');
const { API } = require('../../helpers/api');
2019-08-22 06:02:29 +02:00
const { officeRnDAPIErrors, DEFAULT_DATE_FORMAT, UNPAID_FEE_STATUS } = require('../../constants/constants');
2019-07-25 06:53:32 +02:00
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 feeIdsToRemove = [];
2019-07-25 06:53:32 +02:00
fetchedFees.forEach((fee) => {
2019-08-22 06:02:29 +02:00
const { member, date, invoice } = fee;
const { status } = invoice;
2019-07-25 06:53:32 +02:00
const feeId = fee['_id'];
const isDateInDateRange = startDate.isSameOrBefore(date) && endDate.isSameOrAfter(date);
2019-08-22 06:02:29 +02:00
if (memberIdsMap[member] && isDateInDateRange && (status === UNPAID_FEE_STATUS)) {
feeIdsToRemove.push(feeId);
2019-07-25 06:53:32 +02:00
}
});
API.delete('fees', { data: feeIdsToRemove })
2019-07-25 06:53:32 +02:00
.then(() => {
resolve(true);
})
.catch((error) => {
console.log('error : ', error);
2019-07-25 06:53:32 +02:00
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
};