Ejemplo n.º 1
0
        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);
        }
Ejemplo n.º 2
0
        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);
        }