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)); }
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); }
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; } } }