68 lines
2.2 KiB
JavaScript
68 lines
2.2 KiB
JavaScript
'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.forEach((discountPlan) => {
|
|
if (name === discountPlan){
|
|
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
|
|
};
|