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