'use strict'; const { API } = require('../../helpers/api'); const { DISCOUNT_PLANS, officeRnDAPIErrors, integrationServiceErrors } = require('../../constants/constants'); const fetchAllMembershipsForMemberIds = (memberIds) => { return new Promise((resolve, reject) => { API.get('/memberships') .then((result) => { const memberships = result.data || []; if (Array.isArray(memberIds)){ if (memberIds.length > 0){ const filteredMemberships = []; memberships.forEach((membership) => { const { member } = membership; if (memberIds.indexOf(member) !== -1){ filteredMemberships.push(membership); } }); resolve(filteredMemberships); }else{ resolve(memberships); } }else{ reject(integrationServiceErrors.EXPECTED_MEMBER_IDS_ARRAY); } }) .catch((error) => { reject(error); }); }); }; const reformatMembershipsName = (memberships) => { return new Promise((resolve, reject) => { const asyncMembershipUpdates = []; if (Array.isArray(memberships)){ memberships.forEach((membership) => { const { name, _id } = membership; if (name && name.length > 0 && name[0] !== '[' && DISCOUNT_PLANS.indexOf(name) !== -1){ asyncMembershipUpdates.push(API.put(`memberships/${_id}`, {name: `[${name}]`})); } }); Promise.all(asyncMembershipUpdates) .then(() => { resolve(true); }) .catch((error) => reject(error)); }else{ reject(officeRnDAPIErrors.MEMBERSHIPS_ARE_NOT_LOADED_CORRECTLY); } }); }; module.exports = { fetchAllMembershipsForMemberIds, reformatMembershipsName };