private Task <(bool isComplete, IEnumerable <string> items)> ProducePublishedProviderIds(CancellationToken token, dynamic context) { PublishedProviderFundingCsvDataProcessorContext countContext = (PublishedProviderFundingCsvDataProcessorContext)context; while (countContext.HasPages) { return(Task.FromResult((false, countContext.NextPage().AsEnumerable()))); } return(Task.FromResult((true, ArraySegment <string> .Empty.AsEnumerable()))); }
private async Task GetFundingForPublishedProviderIds(CancellationToken cancellationToken, dynamic context, IEnumerable <string> items) { PublishedProviderFundingCsvDataProcessorContext countContext = (PublishedProviderFundingCsvDataProcessorContext)context; IEnumerable <PublishedProviderFundingCsvData> fundings = await _publishedFundingPolicy.ExecuteAsync(() => _publishedFunding.GetPublishedProvidersFundingDataForCsvReport(items, countContext.SpecificationId, countContext.Statuses)); countContext.AddFundings(fundings); }
public async Task <IEnumerable <PublishedProviderFundingCsvData> > GetFundingData(IEnumerable <string> publishedProviderIds, string specificationId, params PublishedProviderStatus[] statuses) { Guard.IsNullOrWhiteSpace(specificationId, nameof(specificationId)); Guard.IsNotEmpty(publishedProviderIds, nameof(publishedProviderIds)); Guard.IsNotEmpty(statuses, nameof(statuses)); PublishedProviderFundingCsvDataProcessorContext context = new PublishedProviderFundingCsvDataProcessorContext(publishedProviderIds, statuses, specificationId); IProducerConsumer producerConsumer = _producerConsumerFactory.CreateProducerConsumer(ProducePublishedProviderIds, GetFundingForPublishedProviderIds, 20, 5, _logger); await producerConsumer.Run(context); return(context.GetData()); }