public async Task <DataQualityProviderModel> ProvideAsync(IReportServiceContext reportServiceContext, CancellationToken cancellationToken)
        {
            var ukprns = new List <long>();

            var collectionId = await _jobManagementDataProvider.ProvideCollectionIdAsync($"ILR{reportServiceContext.CollectionYear}");

            var fileDetails = await _jobManagementDataProvider.ProvideFilePeriodInfoForCollectionAsync(collectionId);

            var ruleViolations = await _ilrDataProvider.ProvideTop20RuleViolationsAsync();

            var validationRules = await _ilrRefDataProvider.ProvideAsync(cancellationToken);

            var providersWithoutValidLearners = await _ilrDataProvider.ProvideProvidersWithoutValidLearners(cancellationToken);

            var providersWithMostInvalidLearners = await _ilrDataProvider.ProvideProvidersWithMostInvalidLearners(cancellationToken);

            ukprns.AddRange(providersWithoutValidLearners.Select(x => x.Ukprn));
            ukprns.AddRange(providersWithMostInvalidLearners.Select(x => x.Ukprn));

            var organisations = await _organisationDataProvider.ProvideAsync(ukprns);

            return(new DataQualityProviderModel
            {
                CollectionId = collectionId, FileDetails = fileDetails, RuleViolations = ruleViolations,
                ProvidersWithoutValidLearners = providersWithoutValidLearners,
                ProvidersWithMostInvalidLearners = providersWithMostInvalidLearners,
                Organistions = organisations,
                ValidationRules = validationRules
            });
        }
Ejemplo n.º 2
0
        public async Task <ProviderSubmissionsReferenceData> ProvideAsync(IReportServiceContext reportServiceContext)
        {
            var collectionId = await _jobManagementDataProvider.ProvideCollectionIdAsync($"ILR{reportServiceContext.CollectionYear}");

            var providerReturnsTask = _jobManagementDataProvider.ProvideReturnersAndPeriodsAsync(collectionId, reportServiceContext.ReturnPeriod);

            var expectedReturnersTask = _jobManagementDataProvider.ProvideExpectedReturnersUKPRNsAsync(collectionId);

            var actualReturnersTask = _jobManagementDataProvider.ProvideActualReturnersUKPRNsAsync(collectionId, reportServiceContext.ReturnPeriod);

            await Task.WhenAll(
                providerReturnsTask,
                expectedReturnersTask,
                actualReturnersTask);

            var fileDetails = await _ilrDataProvider.ProvideAsync(providerReturnsTask.Result);

            var ukprns = providerReturnsTask.Result.Select(x => x.Ukprn).Union(expectedReturnersTask.Result.Select(x => x.Ukprn)).ToList();

            var orgDetails = await _organisationDataProvider.ProvideAsync(ukprns);

            return(new ProviderSubmissionsReferenceData
            {
                ProviderReturns = providerReturnsTask.Result,
                FileDetails = fileDetails,
                OrgDetails = orgDetails,
                ExpectedReturns = expectedReturnersTask.Result,
                ActualReturners = actualReturnersTask.Result,
                ILRPeriodsAdjustedTimes = reportServiceContext.ILRPeriodsAdjustedTimes.ToList(),
                ReturnPeriod = reportServiceContext.ReturnPeriod
            });
        }