async function checkProcurementEntitlements()

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