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 });
        }
예제 #3
0
        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 });
        }
예제 #6
0
        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 });
        }
예제 #9
0
        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 });
        }
예제 #10
0
        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);
        }
예제 #12
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);
        }
 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);
 }
예제 #14
0
        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);
        }