Beispiel #1
0
        public async Task <string> GenerateReport(IReportServiceContext reportServiceContext, CancellationToken cancellationToken)
        {
            var ukprn          = reportServiceContext.Ukprn;
            var collectionYear = reportServiceContext.CollectionYear;
            var previousYearClosedReturnPeriod = reportServiceContext.PreviousYearClosedReturnPeriod;

            var fileName     = _fileNameService.GetFilename(reportServiceContext, ReportFileName, OutputTypes.Csv);
            var paymentsTask = _appsCoInvestmentDataProvider.GetPaymentsAsync(ukprn, cancellationToken);
            var learnersTask = _appsCoInvestmentDataProvider.GetLearnersAsync(ukprn, cancellationToken);
            var priceEpisodePeriodisedValuesTask = _appsCoInvestmentDataProvider.GetAecPriceEpisodePeriodisedValuesAsync(ukprn, cancellationToken);

            await Task.WhenAll(paymentsTask, learnersTask, priceEpisodePeriodisedValuesTask);

            var appsCoInvestmentRecords = _appsCoInvestmentModelBuilder.Build(learnersTask.Result, paymentsTask.Result, priceEpisodePeriodisedValuesTask.Result, collectionYear, previousYearClosedReturnPeriod).ToList();

            await _csvFileService.WriteAsync <AppsCoInvestmentRecord, AppsCoInvestmentClassMap>(appsCoInvestmentRecords, fileName, reportServiceContext.Container, cancellationToken);

            var persistModels = _appsCoInvestmentPersistenceMapper.Map(reportServiceContext, appsCoInvestmentRecords, cancellationToken);
            await _reportDataPersistanceService.PersistAsync(reportServiceContext, persistModels, cancellationToken);

            return(fileName);
        }