public async getSubscriptions()

in src/services/productService.ts [29:76]


    public async getSubscriptions(userId: string, productId?: string, searchRequest?: SearchQuery): Promise<Page<Subscription>> {
        if (!userId) {
            throw new Error(`Parameter "userId" not specified.`);
        }

        const skip = searchRequest && searchRequest.skip || 0;
        const take = searchRequest && searchRequest.take || Constants.defaultPageSize;
        const odataFilterEntries = [];
        if (productId) {
            if (!productId.startsWith("/products/")) {
                productId = `/products/${productId}`;
            }

            // odataFilterEntries.push(`scope eq '${productId}'`)
            // Temporary fix for compatibility with workspaces
            odataFilterEntries.push(`(endswith(scope,'${productId}'))`);
        }

        if (searchRequest?.pattern) {
            const pattern = Utils.encodeURICustomized(searchRequest.pattern, Constants.reservedCharTuplesForOData);
            odataFilterEntries.push(`(contains(name,'${pattern}'))`);
        }

        const pageOfSubscriptions = new Page<Subscription>();
        let query = `?$top=${take}&$skip=${skip}`;

        if (odataFilterEntries.length > 0) {
            query = Utils.addQueryParameter(query, `$filter=` + odataFilterEntries.join(" and "));
        }

        try {
            const pageContract = await this.apiClient.get<Page<SubscriptionContract>>(`${userId}/subscriptions${query}`, [await this.apiClient.getPortalHeader("getSubscriptions")]);
            const subscriptions = await this.getSubscriptionsData(pageContract.value);

            pageOfSubscriptions.value = subscriptions;
            pageOfSubscriptions.count = pageContract.count;
            pageOfSubscriptions.nextLink = pageContract.nextLink;

            return pageOfSubscriptions;
        }
        catch (error) {
            if (error?.code === "ResourceNotFound") {
                return pageOfSubscriptions;
            }

            throw new Error(`Unable to retrieve subscriptions for user with ID "${userId}". Error: ${error.message}`);
        }
    }