public async Task <ICollection <SummarisedActual> > CollateAndSummariseAsync(ISummarisationMessage summarisationMessage, CancellationToken cancellationToken) { _logger.LogInfo($"Summarisation Wrapper: Retrieving Collection Periods Start"); _logger.LogInfo($"Summarisation Message: CollectionType : {summarisationMessage.CollectionType}, CollectionReturnCode: {summarisationMessage.CollectionReturnCode}, ILRCollectionYear: {summarisationMessage.CollectionYear}, ILRReturnPeriod: {summarisationMessage.CollectionMonth}"); var collectionPeriods = _collectionPeriodsProviders.Single(w => w.CollectionType.Equals(summarisationMessage.CollectionType, StringComparison.OrdinalIgnoreCase)).Provide(); var fundingTypeConfiguration = _fundingTypesProviders.Single(w => w.CollectionType.Equals(summarisationMessage.CollectionType, StringComparison.OrdinalIgnoreCase)).Provide(); _logger.LogInfo($"Summarisation Wrapper: Retrieving Collection Periods End"); _logger.LogInfo($"Summarisation Wrapper: Retrieving FCS Contracts Start"); var periodCodes = fundingTypeConfiguration .SelectMany(ft => ft.FundingStreams.Select(fs => fs.PeriodCode)).Distinct().ToList(); var fcsContractAllocations = await _fcsRepository.RetrieveContractAllocationsAsync(periodCodes, cancellationToken); _logger.LogInfo($"Summarisation Wrapper: Retrieving FCS Contracts End"); var summarisedActuals = new List <SummarisedActual>(); ICollection <TouchpointProvider> providerIdentifiers; providerIdentifiers = await _repositoryFactory.Invoke().GetAllIdentifiersAsync(summarisationMessage.CollectionYear, cancellationToken); _logger.LogInfo($"Summarisation Wrapper: Providers to be summarised : {providerIdentifiers.Count}"); _logger.LogInfo($"Summarisation Wrapper: Retrieving Providers Data Start"); var providersData = await RetrieveProvidersData(providerIdentifiers.ToList(), summarisationMessage, cancellationToken); _logger.LogInfo($"Summarisation Wrapper: Retrieving Providers Data End"); _logger.LogInfo($"Summarisation Wrapper: Summarisation Start"); int runningCount = 1; int totalProviderCount = providerIdentifiers.Count; foreach (var provider in providerIdentifiers) { _logger.LogInfo($"Summarisation Wrapper: Summarising Data of UKPRN: {provider.UKPRN} UKPRN: {provider.TouchpointId} Start, {runningCount} / {totalProviderCount}"); var providerData = providersData.First(q => q.Provider.UKPRN == provider.UKPRN && q.Provider.TouchpointId.Equals(provider.TouchpointId, StringComparison.OrdinalIgnoreCase)); var providerActuals = await _providerSummarisationService.Summarise(providerData, collectionPeriods, fundingTypeConfiguration, fcsContractAllocations, summarisationMessage, cancellationToken); summarisedActuals.AddRange(providerActuals); _logger.LogInfo($"Summarisation Wrapper: Summarising Data of UKPRN: {provider.UKPRN} UKPRN: {provider.TouchpointId} End, {runningCount++} / {totalProviderCount}"); } _logger.LogInfo($"Summarisation Wrapper: Summarisation End"); return(summarisedActuals); }
public async Task <ICollection <SummarisedActual> > CollateAndSummariseAsync(ISummarisationMessage summarisationMessage, CancellationToken cancellationToken) { _logger.LogInfo($"Summarisation Message: CollectionType : {summarisationMessage.CollectionType}, CollectionReturnCode: {summarisationMessage.CollectionReturnCode}, CollectionYear: {summarisationMessage.CollectionYear}, ReturnPeriod: {summarisationMessage.CollectionMonth}"); _logger.LogInfo($"Summarisation Wrapper: Retrieving Generic Collection Data Start"); var genericCollectionData = await _genericCollectionRepository.RetrieveAsync(summarisationMessage.CollectionType, cancellationToken); var ukprns = genericCollectionData.Select(gc => int.Parse(gc.OrganisationId)).Distinct().ToList(); var fundingStreamPeriodCodes = genericCollectionData.Select(gc => gc.FundingStreamPeriodCode).Distinct().ToList(); var fcsContractAllocations = await _fcsRepository.RetrieveContractAllocationsAsync(fundingStreamPeriodCodes, cancellationToken); var genericCollectionContracts = fcsContractAllocations.Where(u => ukprns.Contains(u.DeliveryUkprn.Value)).Distinct().ToList(); var summarisedActuals = await _providerSummarisationService.Summarise(genericCollectionData, summarisationMessage, genericCollectionContracts, cancellationToken); _logger.LogInfo($"Summarisation Wrapper: Retrieving Retrieving Generic Collection Data End"); _logger.LogInfo($"Summarisation Wrapper: Summarisation End"); return(summarisedActuals); }
public async Task <ICollection <SummarisedActual> > CollateAndSummariseAsync(ISummarisationMessage summarisationMessage, CancellationToken cancellationToken) { _logger.LogInfo($"Summarisation Wrapper: Retrieving Collection Periods Start"); _logger.LogInfo($"Summarisation Message: CollectionType : {summarisationMessage.CollectionType}, CollectionReturnCode: {summarisationMessage.CollectionReturnCode}, ILRCollectionYear: {summarisationMessage.CollectionYear}, ILRReturnPeriod: {summarisationMessage.CollectionMonth}"); var providerCollectionType = $"{summarisationMessage.CollectionType}{summarisationMessage.CollectionYear}"; var collectionPeriods = _collectionPeriodsProviders.Single(w => w.CollectionType.Equals(providerCollectionType, StringComparison.OrdinalIgnoreCase)).Provide(); var fundingTypeConfiguration = _fundingTypesProviders.Single(w => w.CollectionType.Equals(providerCollectionType, StringComparison.OrdinalIgnoreCase)).Provide(); _logger.LogInfo($"Summarisation Wrapper: Retrieving Collection Periods End"); _logger.LogInfo($"Summarisation Wrapper: Retrieving FCS Contracts Start"); var fcsContractAllocations = await _fcsRepository.RetrieveContractAllocationsAsync(FundingStreamConstants.FundingStreams, cancellationToken); _logger.LogInfo($"Summarisation Wrapper: Retrieving FCS Contracts End"); var summarisedActuals = new List <SummarisedActual>(); ICollection <int> providerIdentifiers; if (summarisationMessage.Ukprn.HasValue && summarisationMessage.Ukprn > 0) { providerIdentifiers = new List <int> { summarisationMessage.Ukprn.Value }; } else { providerIdentifiers = await _repositoryFactory.Invoke().GetAllIdentifiersAsync(summarisationMessage.CollectionType, cancellationToken); } _logger.LogInfo($"Summarisation Wrapper: Providers to be summarised : {providerIdentifiers.Count}"); _logger.LogInfo($"Summarisation Wrapper: Retrieving Providers Data Start"); var providersData = await RetrieveProvidersData(providerIdentifiers.ToList(), summarisationMessage, cancellationToken); _logger.LogInfo($"Summarisation Wrapper: Retrieving Providers Data End"); _logger.LogInfo($"Summarisation Wrapper: Summarisation Start"); int runningCount = 1; int totalProviderCount = providerIdentifiers.Count; foreach (var ukprn in providerIdentifiers) { _logger.LogInfo($"Summarisation Wrapper: Summarising Data of UKPRN: {ukprn} Start, {runningCount} / {totalProviderCount}"); var providerData = providersData[ukprn]; var providerActuals = await _providerSummarisationService.Summarise(providerData, collectionPeriods, fundingTypeConfiguration, fcsContractAllocations, summarisationMessage, cancellationToken); summarisedActuals.AddRange(providerActuals); _logger.LogInfo($"Summarisation Wrapper: Summarising Data of UKPRN: {ukprn} End, {runningCount++} / {totalProviderCount}"); } _logger.LogInfo($"Summarisation Wrapper: Summarisation End"); return(summarisedActuals); }
public async Task <ICollection <SummarisedActual> > CollateAndSummariseAsync(ISummarisationMessage summarisationMessage, CancellationToken cancellationToken) { _logger.LogInfo($"Summarisation Wrapper: Retrieving Collection Periods Start"); _logger.LogInfo($"Summarisation Message: CollectionType : {summarisationMessage.CollectionType}, CollectionReturnCode: {summarisationMessage.CollectionReturnCode}, ILRCollectionYear: {summarisationMessage.CollectionYear}, ILRReturnPeriod: {summarisationMessage.CollectionMonth}"); var collectionPeriods = _collectionPeriodsProviders.Single(w => w.CollectionType.Equals(summarisationMessage.CollectionType, StringComparison.OrdinalIgnoreCase)).Provide(); var fundingTypeConfiguration = _fundingTypesProviders.Single(w => w.CollectionType.Equals(summarisationMessage.CollectionType, StringComparison.OrdinalIgnoreCase)).Provide(); _logger.LogInfo($"Summarisation Wrapper: Retrieving Collection Periods End"); _logger.LogInfo($"Summarisation Wrapper: Retrieving FCS Contracts Start"); var relevantFundingStreams = fundingTypeConfiguration.ToList() .SelectMany(ftc => ftc.FundingStreams.Select(fs => fs.PeriodCode)).Distinct().ToList(); var fcsContractAllocations = await _fcsRepository.RetrieveContractAllocationsAsync(relevantFundingStreams, cancellationToken); _logger.LogInfo($"Summarisation Wrapper: Retrieving FCS Contracts End"); var summarisedActuals = new List <SummarisedActual>(); ICollection <int> providerIdentifiers; if (summarisationMessage.Ukprn.HasValue && summarisationMessage.Ukprn > 0) { providerIdentifiers = new List <int> { summarisationMessage.Ukprn.Value }; } else { providerIdentifiers = await _repositoryFactory().GetAllIdentifiersAsync(summarisationMessage.CollectionType, cancellationToken); } _logger.LogInfo($"Summarisation Wrapper: Providers to be summarised : {providerIdentifiers.Count}"); _logger.LogInfo($"Summarisation Wrapper: Retrieving Providers Data Start"); var providersData = await RetrieveProvidersData(providerIdentifiers, summarisationMessage, cancellationToken); _logger.LogInfo($"Summarisation Wrapper: Retrieving Providers Data End"); _logger.LogInfo($"Summarisation Wrapper: Summarisation Start"); int runningCount = 1; int totalProviderCount = providersData.Count; foreach (var provider in providersData) { _logger.LogInfo($"Summarisation Wrapper: Summarising Data of UKPRN: {provider.UKPRN} Start, {runningCount} / {totalProviderCount}"); var providerActuals = await _providerSummarisationService.Summarise(provider, collectionPeriods, fundingTypeConfiguration, fcsContractAllocations, summarisationMessage, cancellationToken); summarisedActuals.AddRange(providerActuals); _logger.LogInfo($"Summarisation Wrapper: Summarising Data of UKPRN: {provider.UKPRN} End, {runningCount++} / {totalProviderCount}"); } //Funding Data Removed logic _logger.LogInfo($"Summarisation Process: Funding Data Removed Start"); var actualsToCarry = await _fundingDataRemovedService.FundingDataRemovedAsync(summarisedActuals, summarisationMessage, cancellationToken); summarisedActuals.AddRange(actualsToCarry); _logger.LogInfo($"Summarisation Process: Funding Data Removed End"); _logger.LogInfo($"Summarisation Wrapper: Summarisation End"); return(summarisedActuals); }