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