private void GenerateGroupedPublishedProviderEstateCsv(
            IEnumerable <IGrouping <string, PublishedProviderVersion> > providerVersionGroup,
            IPublishedProviderCsvTransform publishedProviderCsvTransform,
            string temporaryFilePath,
            bool outputHeaders)
        {
            IEnumerable <ExpandoObject> csvRows = publishedProviderCsvTransform.Transform(providerVersionGroup);

            AppendCsvFragment(temporaryFilePath, csvRows, outputHeaders);
        }
Пример #2
0
        public override async Task Process(Message message)
        {
            string temporaryFilePath = GetCsvFilePath(_fileSystemCacheSettings.Path, message);

            EnsureFileIsNew(temporaryFilePath);

            IPublishedProviderCsvTransform publishedProviderCsvTransform = _publishedProviderCsvTransformServiceLocator.GetService(JobDefinitionName);
            bool processedResults = await GenerateCsv(message, temporaryFilePath, publishedProviderCsvTransform);

            if (!processedResults)
            {
                _logger.Information("Did not create a new csv report as no providers matched");

                return;
            }

            await UploadToBlob(temporaryFilePath, GetCsvFileName(message), GetContentDisposition(message), GetMetadata(message));
        }
        protected override async Task <bool> GenerateCsv(Message message,
                                                         string temporaryFilePath,
                                                         IPublishedProviderCsvTransform publishedProviderCsvTransform)
        {
            bool outputHeaders    = true;
            bool processedResults = false;

            string specificationId = message.GetUserProperty <string>("specification-id");

            await _publishedFundingRepositoryPolicy.ExecuteAsync(() => _publishedFundingRepository.RefreshedProviderVersionBatchProcessing(specificationId,
                                                                                                                                           publishedProviderVersions =>
            {
                List <IGrouping <string, PublishedProviderVersion> > providerVersionGroups = publishedProviderVersions.GroupBy(v => v.ProviderId).ToList();

                GenerateGroupedPublishedProviderEstateCsv(providerVersionGroups, publishedProviderCsvTransform, temporaryFilePath, outputHeaders);

                outputHeaders    = false;
                processedResults = true;
                return(Task.CompletedTask);
            }, BatchSize)
                                                                 );

            return(processedResults);
        }
Пример #4
0
 protected abstract Task <bool> GenerateCsv(Message message, string temporaryFilePath, IPublishedProviderCsvTransform publishedProviderCsvTransform);