public async Task <string> GenerateReport(IReportServiceContext reportServiceContext, CancellationToken cancellationToken)
        {
            var fileName = _fileNameService.GetFilename(reportServiceContext, ReportFileName, OutputTypes.Csv);

            var paymentsTask            = _appsAdditionalPaymentsDataProvider.GetPaymentsAsync(reportServiceContext, cancellationToken);
            var learnersTask            = _appsAdditionalPaymentsDataProvider.GetLearnersAsync(reportServiceContext, cancellationToken);
            var contractAllocationsTask = _appsAdditionalPaymentsDataProvider.GetAecLearningDeliveriesAsync(reportServiceContext, cancellationToken);
            var priceEpisodesTask       = _appsAdditionalPaymentsDataProvider.GetPriceEpisodesAsync(reportServiceContext, cancellationToken);

            await Task.WhenAll(paymentsTask, learnersTask, contractAllocationsTask, priceEpisodesTask);

            var model = _appsAdditionalPaymentsModelBuilder.Build(
                paymentsTask.Result,
                learnersTask.Result,
                contractAllocationsTask.Result,
                priceEpisodesTask.Result);

            await _csvFileService.WriteAsync <AppsAdditionalPaymentReportModel, AppsAdditionalPaymentsClassMap>(model, fileName, reportServiceContext.Container, cancellationToken, null, null);

            var persistModels = _appsAdditionalPaymentPersistanceMapper.Map(reportServiceContext, model, cancellationToken);
            await _persistanceService.PersistAsync(reportServiceContext, persistModels, cancellationToken);


            return(fileName);
        }