in api/v1/src/accounts/dataManager.js [201:279]
async function checkProcurementEntitlements(projectId, accounts, accountFilter) {
// Check if marketplace integration is enabled before making procurement calls.
if (await runtimeConfig.marketplaceIntegration(projectId) === false) {
return accounts;
}
/*let filterString = `(state=ENTITLEMENT_ACTIVE OR state=ENTITLEMENT_PENDING_PLAN_CHANGE_APPROVAL)`;
if (accountFilter) {
filterString = `(state=ENTITLEMENT_ACTIVE OR state=ENTITLEMENT_PENDING_PLAN_CHANGE_APPROVAL) AND (${accountFilter})`;
}*/
let filterString = '';
if (accountFilter) {
filterString = accountFilter;
}
const procurementUtil = new CommerceProcurementUtil(projectId);
const result = await procurementUtil.listEntitlements(filterString);
// const entitlements = result.entitlements || [];
const stateFilter = ['ENTITLEMENT_ACTIVE', 'ENTITLEMENT_PENDING_PLAN_CHANGE_APPROVAL', 'ENTITLEMENT_PENDING_PLAN_CHANGE', 'ENTITLEMENT_PENDING_CANCELLATION'];
let entitlements = [];
if (result.entitlements) {
// Work around for bug [#00012788] Error filtering on ENTITLEMENT_PENDING_PLAN_CHANGE_APPROVAL
if (stateFilter && stateFilter.length > 0) {
entitlements = underscore.filter(result.entitlements, (row) => {
return stateFilter.includes(row.state);
});
} else {
entitlements = result.entitlements;
}
}
// Iterate every account
accounts.forEach((account) => {
account.marketplaceSynced = true;
// Get distinct list of account names associated to each datashare account
let accountNames = [];
if (account.marketplace && account.marketplace.length > 0) {
accountNames = account.marketplace.map(i => i.accountName);
account.marketplaceActivated = true;
} else {
account.marketplaceActivated = false;
}
let userEntitlements = [];
if (accountNames && accountNames.length > 0) {
userEntitlements = underscore.filter(entitlements, (e) => {
return accountNames.includes(e.account);
});
}
// Iterate datashare account policies
if (account.policies && account.policies.length > 0) {
account.policies.forEach((p) => {
const userEntitlement = underscore.findWhere(userEntitlements, { product: p.solutionId, plan: p.planId });
if (userEntitlement) {
p.marketplaceEntitlementActive = true;
} else {
p.marketplaceEntitlementActive = false;
account.marketplaceSynced = false;
}
});
}
// Iterate marketplace entitlements
userEntitlements.forEach((e) => {
if (account.policies && account.policies.length > 0) {
const policy = underscore.findWhere(account.policies, { solutionId: e.product, planId: e.plan });
if (!policy) {
account.marketplaceSynced = false;
}
} else {
account.marketplaceSynced = false;
}
});
});
return accounts;
}