public async Task GenerateReport()
        {
            var cancellationToken = CancellationToken.None;
            var academicYear      = 2021;
            var ukprn             = 123456;
            var fileName          = "FileName";
            var container         = "Container";

            var rows = new DataQualityProviderModel();
            var reportServiceContext = new Mock <IReportServiceContext>();

            var workbook = new Workbook();

            reportServiceContext.SetupGet(c => c.Ukprn).Returns(ukprn);
            reportServiceContext.SetupGet(c => c.CollectionYear).Returns(academicYear);
            reportServiceContext.SetupGet(c => c.Container).Returns(container);

            var fileNameServiceMock  = new Mock <IFileNameService>();
            var excelFileServiceMock = new Mock <IExcelFileService>();
            var dataProviderMock     = new Mock <IDataQualityDataProvider>();
            var renderServiceMock    = new Mock <IDataQualityRenderService>();

            fileNameServiceMock.Setup(s => s.GetInternalFilename(reportServiceContext.Object, "Data Quality Report", OutputTypes.Excel, true, true)).Returns(fileName);

            var modelBuilderMock = new Mock <IDataQualityModelBuilder>();

            modelBuilderMock.Setup(b => b.Build(It.IsAny <DataQualityProviderModel>(), reportServiceContext.Object)).Returns(rows);
            excelFileServiceMock.Setup(s => s.GetWorkbookFromTemplate(It.IsAny <Stream>())).Returns(workbook);

            var report = NewReport(fileNameServiceMock.Object, excelFileServiceMock.Object, dataProviderMock.Object, modelBuilderMock.Object, renderServiceMock.Object);

            await report.GenerateReport(reportServiceContext.Object, cancellationToken);

            excelFileServiceMock.Verify(s => s.SaveWorkbookAsync(workbook, fileName, container, cancellationToken));
        }
Beispiel #2
0
        public DataQualityProviderModel Build(DataQualityProviderModel providerModel, IReportServiceContext reportServiceContext)
        {
            var orgDictionary   = providerModel.Organistions.ToDictionary(k => k.Ukprn, v => v);
            var rulesDictionary = providerModel.ValidationRules.ToDictionary(k => k.Rulename, v => v.Message, StringComparer.OrdinalIgnoreCase);

            providerModel.ReturningProviders = GetReturningProviders(providerModel.FileDetails);
            PopulateOrgNames(providerModel, orgDictionary);
            PopulateReturnPeriod(providerModel.ProvidersWithMostInvalidLearners, reportServiceContext.ILRPeriodsAdjustedTimes.ToList());
            PopulateErrorMessage(providerModel.RuleViolations, rulesDictionary);

            return(providerModel);
        }
        public Worksheet Render(string periodNumberName, DataQualityProviderModel dataQualityProvideModel, Worksheet worksheet, Workbook workbook)
        {
            worksheet.Cells[1, 1].PutValue($"ILR Data Quality Reports - {periodNumberName}");
            worksheet.Cells[2, 1].PutValue($"Report Run: {_dateTimeProvider.ConvertUtcToUk(_dateTimeProvider.GetNowUtc()):u}");

            var designer = new WorkbookDesigner
            {
                Workbook = workbook
            };

            designer.SetDataSource("ReturningProvidersInfo", dataQualityProvideModel.ReturningProviders);
            designer.SetDataSource("RuleViolationsInfo", dataQualityProvideModel.RuleViolations);
            designer.SetDataSource("ProviderWithoutValidLearnerInfo", dataQualityProvideModel.ProvidersWithoutValidLearners);
            designer.SetDataSource("Top10ProvidersWithInvalidLearners", dataQualityProvideModel.ProvidersWithMostInvalidLearners);
            designer.Process();

            return(worksheet);
        }
Beispiel #4
0
        private void PopulateOrgNames(DataQualityProviderModel dataQualityProviderModel, IDictionary <long, Organisation> orgDictionary)
        {
            foreach (var provider in dataQualityProviderModel.ProvidersWithMostInvalidLearners)
            {
                if (orgDictionary.TryGetValue(provider.Ukprn, out var org))
                {
                    provider.Name   = org.Name;
                    provider.Status = org.Status;
                }
            }

            foreach (var provider in dataQualityProviderModel.ProvidersWithoutValidLearners)
            {
                if (orgDictionary.TryGetValue(provider.Ukprn, out var org))
                {
                    provider.Name = org.Name;
                }
            }
        }