Esempio n. 1
0
        public async Task <IEnumerable <InvoiceItem> > QueryInvoices(string status, DateTime?statusChangedFrom, DateTime?statusChangedTo, CancellationToken ct)
        {
            var config = await casSystemConfigurationProvider.Get(ct);

            var response = await casWebProxy.GetInvoiceAsync(new GetInvoiceRequest
            {
                PayGroup = config.PayGroup,
                PaymentStatusDateFrom = statusChangedFrom,
                PaymentStatusDateTo   = statusChangedTo,
                PaymentStatus         = status
            }, ct);

            var items = new List <InvoiceItem>(response.Items);

            //get all pages
            while (response.Next != null)
            {
                var queryParams = HttpUtility.ParseQueryString(new Uri(response.Next.Ref).Query);
                if (!int.TryParse(queryParams.Get("page"), out var nextPageNumber))
                {
                    break;
                }
                response = await casWebProxy.GetInvoiceAsync(new GetInvoiceRequest
                {
                    PayGroup = config.PayGroup,
                    PaymentStatusDateFrom = statusChangedFrom,
                    PaymentStatus         = status,
                    PageNumber            = nextPageNumber
                }, ct);

                items.AddRange(response.Items);
            }

            return(items);
        }