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); }
public async Task <IEnumerable <string> > GenerateAsync(IReportServiceContext reportServiceContext, IReportServiceDependentData reportsDependentData, CancellationToken cancellationToken) { var fileName = _fileNameService.GetFilename(reportServiceContext, ReportName, OutputTypes.Csv); var model = _modelBuilder.Build(reportServiceContext, reportsDependentData); await _csvService.WriteAsync <TModel, TClassMap>(model, fileName, reportServiceContext.Container, cancellationToken); return(new[] { fileName }); }
public async Task <string> GenerateReport(IReportServiceContext reportServiceContext, CancellationToken cancellationToken) { var fileName = _fileNameService.GetInternalFilename(reportServiceContext, ReportFileName, OutputTypes.Csv); var models = await _actCountModelBuilder.BuildAsync(cancellationToken); await _csvFileService.WriteAsync <ActCountModel, ActCountClassMap>(models, fileName, reportServiceContext.Container, cancellationToken); return(fileName); }
public async Task ProcessAync(IDesktopReferenceDataContext context, CancellationToken cancellationToken) { _logger.LogInfo("Generating Reference Data Report Summary"); var ukDateTime = _dateTimeProvider.ConvertUtcToUk(context.SubmissionDateTimeUTC); var filePath = BuildFilePath(context); var fileName = FileNameBuilder(context.CollectionName, filePath, ukDateTime); var statistics = _referenceDataStatisticsService.GetStatistics(); await _csvFileService.WriteAsync <ReferenceDataSummaryStatistics, ReferenceDataSummaryFileMapper>(statistics, fileName, context.Container, cancellationToken); }
public async Task <IEnumerable <string> > GenerateReportAsync( IEasJobContext easContext, IEnumerable <EasCsvRecord> data, IEnumerable <ValidationErrorModel> validationErrors, CancellationToken cancellationToken) { var models = GetReportData(data, validationErrors); var fileName = _fileNameService.GetFilename(easContext.Ukprn, easContext.JobId, ReportNameConstants.FundingReport, easContext.SubmissionDateTimeUtc, OutputTypes.Csv); await _csvService.WriteAsync <EasCsvRecord, EasCsvRecordMapper>(models, fileName, easContext.Container, cancellationToken); return(new[] { fileName }); }
public async Task <IEnumerable <string> > GenerateAsync(IReportServiceContext reportServiceContext, IReportServiceDependentData reportsDependentData, CancellationToken cancellationToken) { var ilrValidationErrors = reportsDependentData.Get <List <ValidationError> >(); var fileName = _fileNameService.GetFilename(reportServiceContext, ReportName, OutputTypes.Csv); var validationErrorRows = _validationSchemaErrorsReportBuilder.Build(ilrValidationErrors); await _csvService.WriteAsync <ValidationErrorRow, ValidationErrorMapper>(validationErrorRows, fileName, reportServiceContext.Container, cancellationToken); await _frontEndValidationReport.GenerateAsync(reportServiceContext, validationErrorRows, true, cancellationToken); return(new[] { fileName }); }
public async Task <IEnumerable <string> > GenerateAsync(IReportServiceContext reportServiceContext, IReportServiceDependentData reportsDependentData, CancellationToken cancellationToken) { ILooseMessage ilrMessage = reportsDependentData.Get <ILooseMessage>(); ReferenceDataRoot ilrReferenceData = reportsDependentData.Get <ReferenceDataRoot>(); List <ValidationError> ilrValidationErrors = reportsDependentData.Get <List <ValidationError> >(); var fileName = _fileNameService.GetFilename(reportServiceContext, ReportName, OutputTypes.Csv); var validationErrorRows = _validationErrorsReportBuilder.Build(ilrValidationErrors, ilrMessage, ilrReferenceData.MetaDatas.ValidationErrors); await _csvService.WriteAsync <ValidationErrorRow, ValidationErrorMapper>(validationErrorRows, fileName, reportServiceContext.Container, cancellationToken); await _frontEndValidationReport.GenerateAsync(reportServiceContext, validationErrorRows, false, cancellationToken); return(new[] { fileName }); }
public async Task <string[]> GenerateReport(IEnumerable <ReportDataModel> data, INcsJobContextMessage ncsJobContextMessage, CancellationToken cancellationToken) { _logger.LogInfo("Generating Occupancy Report"); var fileName = _filenameService.GetFilename(ncsJobContextMessage.Ukprn, ncsJobContextMessage.JobId, ReportNameConstants.Occupancy, ncsJobContextMessage.DssTimeStamp, OutputTypes.Csv); var reportData = GetOccupancyReportModel(data, ncsJobContextMessage); var mapper = _classMapFactory.Build(ncsJobContextMessage); await _csvFileService.WriteAsync(reportData, fileName, ncsJobContextMessage.DctContainer, cancellationToken, classMap : mapper); _logger.LogInfo("Occupancy Report generated"); return(new[] { fileName }); }
public async Task <IEnumerable <string> > GenerateAsync(IOperationsReportServiceContext reportServiceContext, CancellationToken cancellationToken) { var validationRuleDetails = await _modelBuilder.Build(reportServiceContext, cancellationToken); var fileNameCsv = _fileNameService.Generate(reportServiceContext, ReportName, OutputTypes.Csv, false, false, includeJobId: true); var fileNameJson = _fileNameService.Generate(reportServiceContext, ReportName, OutputTypes.Json, false, false, includeJobId: true); var validationRuleDetailsList = validationRuleDetails.ToList(); using (var stream = await _fileService.OpenWriteStreamAsync(fileNameJson, reportServiceContext.Container, cancellationToken)) { _serializationService.Serialize(validationRuleDetailsList, stream); } await _csvFileService.WriteAsync <ValidationRuleDetail, ValidationRuleDetailReportClassMap>(validationRuleDetailsList, fileNameCsv, reportServiceContext.Container, cancellationToken); return(new[] { fileNameCsv }); }
public async Task <IEnumerable <string> > GenerateAsync(IReportServiceContext reportServiceContext, CancellationToken cancellationToken) { _logger.LogInfo("Report Generation for Period Summary started"); var collectionTypes = GetCollectionTypes(reportServiceContext); var fileName = collectionTypes.First(ct => ct.FileName != null).FileName; var logSum = string.Join(" and ", collectionTypes.Select(ct => $"{ct.CollectionType} / {ct.CollectionReturn}")); _logger.LogInfo($"Retrieving summarised data for {logSum}"); var periods = await _periodSummaryDataProvider.ProvideAsync(collectionTypes, cancellationToken); _logger.LogInfo($"Saving summarised data as '{fileName}' in {reportServiceContext.Container}"); await _csvService.WriteAsync <Model.PeriodSummary, PeriodSummaryReportClassMap>(periods, fileName, reportServiceContext.Container, cancellationToken); _logger.LogInfo("Report Generation for Period Summary finished"); return(new[] { fileName }); }
public async Task <string> GenerateReport(IReportServiceContext reportServiceContext, CancellationToken cancellationToken) { var ukprn = reportServiceContext.Ukprn; var collectionYear = reportServiceContext.CollectionYear; var fileName = _fileNameService.GetFilename(reportServiceContext, ReportFileName, OutputTypes.Csv); _logger.LogInfo("Apps Monthly Payment Report Data Provider Start"); var paymentsTask = _appsMonthlyPaymentsDataProvider.GetPaymentsAsync(ukprn, collectionYear, cancellationToken); var learnersTask = _appsMonthlyPaymentsDataProvider.GetLearnersAsync(ukprn, cancellationToken); var contractAllocationsTask = _appsMonthlyPaymentsDataProvider.GetContractAllocationsAsync(ukprn, cancellationToken); var earningsTask = _appsMonthlyPaymentsDataProvider.GetEarningsAsync(ukprn, cancellationToken); var priceEpisodesTask = _appsMonthlyPaymentsDataProvider.GetPriceEpisodesAsync(ukprn, cancellationToken); await Task.WhenAll(paymentsTask, learnersTask, contractAllocationsTask, earningsTask, priceEpisodesTask); var larsLearningDeliveries = await _appsMonthlyPaymentsDataProvider.GetLarsLearningDeliveriesAsync(learnersTask.Result, cancellationToken); _logger.LogInfo("Apps Monthly Payment Report Data Provider End"); _logger.LogInfo("Apps Monthly Payment Report Model Build Start"); var appsMonthlyRecords = _appsMonthlyPaymentModelBuilder.Build( paymentsTask.Result, learnersTask.Result, contractAllocationsTask.Result, earningsTask.Result, larsLearningDeliveries, priceEpisodesTask.Result).ToList(); _logger.LogInfo("Apps Monthly Payment Report Model Build End"); await _csvFileService.WriteAsync <AppsMonthlyRecord, AppsMonthlyClassMap>(appsMonthlyRecords, fileName, reportServiceContext.Container, cancellationToken); var persistModels = _appsMonthlyPersistenceMapper.Map(reportServiceContext, appsMonthlyRecords, cancellationToken); await _reportDataPersistanceService.PersistAsync(reportServiceContext, persistModels, cancellationToken); return(fileName); }
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); }
public async Task WriteCsv(IEsfJobContext esfJobContext, string fileName, IEnumerable <TModel> models, CancellationToken cancellationToken, TClassMap classMap = null) { await _csvFileService.WriteAsync <TModel, TClassMap>(models, fileName, esfJobContext.BlobContainerName, cancellationToken, classMap : classMap); }
public async Task <string> GenerateReport(IReportServiceContext reportServiceContext, CancellationToken cancellationToken) { var ukprn = reportServiceContext.Ukprn; var collectionYear = reportServiceContext.CollectionYear; var baseFileName = _fileNameService.GetFilename(reportServiceContext, BaseReportFileName, OutputTypes.Csv, true, true); var downloadFilename = _fileNameService.GetFilename(reportServiceContext, BaseReportFileName + " Download", OutputTypes.Csv, false, true); var summaryFilename = _fileNameService.GetFilename(reportServiceContext, BaseReportFileName + " Summary", OutputTypes.Json, false, true); _logger.LogInfo("UYP Summary Report Data Provider Start"); var dasPaymentsTask = _uypSummaryViewDataProvider.GetDASPaymentsAsync(ukprn, collectionYear, cancellationToken); var ilrLearnerInfoTask = _uypSummaryViewDataProvider.GetILRLearnerInfoAsync(ukprn, cancellationToken); var learnerDeliveryEarningsTask = _uypSummaryViewDataProvider.GetLearnerDeliveryEarningsAsync(ukprn, cancellationToken); var priceEpisodeEarningsTask = _uypSummaryViewDataProvider.GetPriceEpisodeEarningsAsync(ukprn, cancellationToken); var coInvestmentsTask = _uypSummaryViewDataProvider.GetCoinvestmentsAsync(ukprn, cancellationToken); var dataLockTask = _uypSummaryViewDataProvider.GetDASDataLockAsync(ukprn, collectionYear, cancellationToken); var hbcTask = _uypSummaryViewDataProvider.GetHBCPInfoAsync(ukprn, collectionYear, cancellationToken); await Task.WhenAll(dasPaymentsTask, ilrLearnerInfoTask, learnerDeliveryEarningsTask, priceEpisodeEarningsTask, coInvestmentsTask, dataLockTask, hbcTask); // Get the employer name information var apprenticeshipIds = dasPaymentsTask.Result.Select(p => p.ApprenticeshipId); var legalEntityNameDictionary = await _uypSummaryViewDataProvider.GetLegalEntityNameAsync(ukprn, apprenticeshipIds, cancellationToken); _logger.LogInfo("UYP Summary Report Data Provider End"); _logger.LogInfo("UYP Summary Report Model Build Start"); var uypSummaryViewRecords = _uypSummaryViewModelBuilder.Build( dasPaymentsTask.Result, ilrLearnerInfoTask.Result, learnerDeliveryEarningsTask.Result, priceEpisodeEarningsTask.Result, coInvestmentsTask.Result, dataLockTask.Result, hbcTask.Result, legalEntityNameDictionary, reportServiceContext.ReturnPeriod, ukprn).ToList(); _logger.LogInfo("UYP Summary Report Model Build End"); // Full data set used for summary and data persist await _csvFileService.WriteAsync <LearnerLevelViewModel, UYPSummaryViewClassMap>(uypSummaryViewRecords, baseFileName, reportServiceContext.Container, cancellationToken); var summaryViewData = CreateSummary(uypSummaryViewRecords, cancellationToken); string summaryFile = GetJson(summaryViewData, cancellationToken); await WriteAsync(summaryFilename, summaryFile, reportServiceContext.Container, cancellationToken); // Persist data for leaner level var persistModels = _uypSummaryViewPersistenceMapper.Map(reportServiceContext, uypSummaryViewRecords, cancellationToken); await _learnerLevelReportDataPersistanceService.PersistAsync(reportServiceContext, persistModels, cancellationToken); //persist data for summary view var summaryPersistModels = _uypSummaryViewPersistenceMapper.Map(reportServiceContext, summaryViewData); await _summaryReportDataPersistanceService.PersistAsync(reportServiceContext, summaryPersistModels, cancellationToken); // Only learners with issues are made available for the provider to download as a report var uypSummaryViewRecordsWithIssues = uypSummaryViewRecords.Where(p => p.IssuesAmount < 0); await _csvFileService.WriteAsync <LearnerLevelViewModel, UYPSummaryViewDownloadClassMap>(uypSummaryViewRecordsWithIssues, downloadFilename, reportServiceContext.Container, cancellationToken); if (SampleProviders.SampleReportProviderUkPrns.Contains(ukprn)) { var zipName = string.Format(ReportZipFileName, ukprn); await _reportZipService.CreateOrUpdateZipWithReportAsync(zipName, baseFileName, reportServiceContext, cancellationToken); await _reportZipService.CreateOrUpdateZipWithReportAsync(zipName, summaryFilename, reportServiceContext, cancellationToken); await _reportZipService.CreateOrUpdateZipWithReportAsync(zipName, downloadFilename, reportServiceContext, cancellationToken); } return(baseFileName); }