private async Task <CosmosListPage <RMA> > GenerateRMAList(IQueryable <RMA> queryable, CosmosListOptions listOptions) { QueryRequestOptions requestOptions = new QueryRequestOptions(); requestOptions.MaxItemCount = listOptions.PageSize; CosmosListPage <RMA> rmas = await _rmaRepo.GetItemsAsync(queryable, requestOptions, listOptions); return(rmas); }
public async Task <List <RMAWithRMALineItem> > RMADetail(string templateID, ListArgs <ReportAdHocFilters> args, DecodedToken decodedToken) { IList <ListFilter> filters = await BuildFilters(templateID, args, decodedToken, "DateCreated", "SupplierID"); CosmosListOptions listOptions = new CosmosListOptions() { PageSize = -1, Sort = "RMANumber", SortDirection = SortDirection.ASC, Filters = filters, }; IQueryable <RMA> queryable = _rmaDetail.GetQueryable() .Where(order => order.PartitionKey == "PartitionValue"); QueryRequestOptions requestOptions = new QueryRequestOptions { MaxItemCount = listOptions.PageSize, MaxConcurrency = -1 }; CosmosListPage <RMA> rmaDataResponse = await _rmaDetail.GetItemsAsync(queryable, requestOptions, listOptions); List <RMA> rmaData = rmaDataResponse.Items; listOptions.ContinuationToken = rmaDataResponse.Meta.ContinuationToken; while (listOptions.ContinuationToken != null) { CosmosListPage <RMA> responseWithToken = await _rmaDetail.GetItemsAsync(queryable, requestOptions, listOptions); rmaData.AddRange(responseWithToken.Items); listOptions.ContinuationToken = responseWithToken.Meta.ContinuationToken; } var rmas = new List <RMAWithRMALineItem>(); var supplierFilter = args.Filters.FirstOrDefault(filter => filter.PropertyName == "SupplierID"); var me = await _oc.Me.GetAsync(decodedToken.AccessToken); foreach (RMA detailData in rmaData) { if (supplierFilter == null || supplierFilter.FilterExpression == detailData.SupplierID) { if (decodedToken.CommerceRole == CommerceRole.Seller || me.Supplier.ID == detailData.SupplierID) { foreach (RMALineItem rmaLineItem in detailData.LineItems) { rmas.Add(new RMAWithRMALineItem { RMA = detailData, RMALineItem = rmaLineItem }); } } } } return(rmas); }