'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 };