public async Task WhenLookingUpTargetOrganisationGroupBasedOnAcadmeyTrustInformation_ThenTargetOrganisationGroupReturned() { IEnumerable <Provider> scopedProviders = GenerateScopedProviders(); OrganisationGroupLookupParameters organisationGroupLookupParameters = new OrganisationGroupLookupParameters { GroupTypeIdentifier = Common.ApiClient.Policies.Models.OrganisationGroupTypeIdentifier.AcademyTrustCode, OrganisationGroupTypeCode = Common.ApiClient.Policies.Models.OrganisationGroupTypeCode.AcademyTrust }; TargetOrganisationGroup group = await _organisationGroupTargetProviderLookup.GetTargetProviderDetails(organisationGroupLookupParameters, Common.ApiClient.Policies.Models.GroupingReason.Information, scopedProviders); group.Identifiers.Any(); group.Name .Should() .Be("Academy Trust 1"); group.Identifier .Should() .Be("101"); group.Identifiers.Count() .Should() .Be(2); }
public async Task WhenLookingUpTargetOrganisationGroupBasedOnProviderPayment_ThenTargetOrganisationGroupReturned() { IEnumerable <Provider> scopedProviders = GenerateScopedProviders(); OrganisationGroupLookupParameters organisationGroupLookupParameters = new OrganisationGroupLookupParameters { IdentifierValue = "1003", OrganisationGroupTypeCode = Common.ApiClient.Policies.Models.OrganisationGroupTypeCode.Provider, ProviderVersionId = _providerVersionId }; TargetOrganisationGroup group = await _organisationGroupTargetProviderLookup.GetTargetProviderDetails(organisationGroupLookupParameters, Common.ApiClient.Policies.Models.GroupingReason.Payment, new List <Provider> { scopedProviders.Where(_ => _.TrustCode == "102").First() } ); group.Name .Should() .Be("Provider 3"); group.Identifier .Should() .Be("1003"); group.Identifiers .Should() .BeEmpty(); }
public async Task WhenLookingUpTargetOrganisationGroupBasedOnCountryInformation_ThenTargetOrganisationGroupReturned() { IEnumerable <Provider> scopedProviders = GenerateScopedProviders(); OrganisationGroupLookupParameters organisationGroupLookupParameters = new OrganisationGroupLookupParameters { GroupTypeIdentifier = Common.ApiClient.Policies.Models.OrganisationGroupTypeIdentifier.CountryCode, OrganisationGroupTypeCode = Common.ApiClient.Policies.Models.OrganisationGroupTypeCode.Country }; TargetOrganisationGroup group = await _organisationGroupTargetProviderLookup.GetTargetProviderDetails(organisationGroupLookupParameters, Common.ApiClient.Policies.Models.GroupingReason.Information, scopedProviders.Where(_ => _.TrustStatus != TrustStatus.SupportedByAMultiAcademyTrust)); group.Identifiers.Any(); group.Name .Should() .Be("Country 1"); group.Identifier .Should() .Be("C1"); group.Identifiers.Count() .Should() .Be(0); }
public async Task WhenLookingUpTargetOrganisationGroupBasedOnDfeEstablshmentNummberInformation_ThenTargetOrganisationGroupReturned() { IEnumerable <Provider> scopedProviders = GenerateScopedProviders(); OrganisationGroupLookupParameters organisationGroupLookupParameters = new OrganisationGroupLookupParameters { GroupTypeIdentifier = Common.ApiClient.Policies.Models.OrganisationGroupTypeIdentifier.DfeEstablishmentNumber }; TargetOrganisationGroup group = await _organisationGroupTargetProviderLookup.GetTargetProviderDetails(organisationGroupLookupParameters, Common.ApiClient.Policies.Models.GroupingReason.Information, scopedProviders.Where(_ => _.TrustStatus != TrustStatus.SupportedByAMultiAcademyTrust)); group.Name .Should() .Be("Dfe Establishment Number"); group.Identifier .Should() .Be("Dfe Establishment Number"); group.Identifiers .Should() .BeNull(); }
public async Task WhenLookingUpTargetOrganisationGroupBasedOnMultiAcademyTrustForContracting_ThenTargetOrganisationGroupReturned() { OrganisationGroupLookupParameters organisationGroupLookupParameters = new OrganisationGroupLookupParameters { IdentifierValue = "106", GroupTypeIdentifier = Common.ApiClient.Policies.Models.OrganisationGroupTypeIdentifier.UKPRN, OrganisationGroupTypeCode = Common.ApiClient.Policies.Models.OrganisationGroupTypeCode.AcademyTrust, ProviderVersionId = _providerVersionId, }; AndCoreProviderListExistsWithStandardProviders(); TargetOrganisationGroup group = await _organisationGroupTargetProviderLookup.GetTargetProviderDetails(organisationGroupLookupParameters, Common.ApiClient.Policies.Models.GroupingReason.Contracting, _scopedProviders.Where(_ => _.TrustCode == "106" && _.ProviderType == "Academy trust")); group.Identifiers.Any(); group.Name .Should() .Be("Academy Trust 2"); group.Identifier .Should() .Be("1008"); }
public async Task WhenLookingUpTargetOrganisationGroupBasedOnMultiAcadmeyTrustPayment_ThenTargetOrganisationGroupReturned() { IEnumerable <Provider> scopedProviders = GenerateScopedProviders(); OrganisationGroupLookupParameters organisationGroupLookupParameters = new OrganisationGroupLookupParameters { IdentifierValue = "106", OrganisationGroupTypeCode = Common.ApiClient.Policies.Models.OrganisationGroupTypeCode.AcademyTrust, ProviderVersionId = _providerVersionId }; TargetOrganisationGroup group = await _organisationGroupTargetProviderLookup.GetTargetProviderDetails(organisationGroupLookupParameters, Common.ApiClient.Policies.Models.GroupingReason.Payment, new List <Provider> { scopedProviders.Where(_ => _.TrustCode == "106" && _.ProviderType == "Academy trust").First() }); group.Identifiers.Any(); group.Name .Should() .Be("Academy Trust 2"); group.Identifier .Should() .Be("1008"); group.Identifiers.Count() .Should() .Be(2); }
public async Task <int> Generate(FeedOptions options) { IEnumerable <Provider> records = GetRecords(options.InputFilePath); foreach (Provider provider in records) { PublishedProviderVersion publishedProviderVersion = GetPublishedProviderVersion(provider); Common.TemplateMetadata.Models.TemplateMetadataContents templateMetadataContents = GetProviderTemplateMetadataContents(); TemplateMapping templateMapping = GetTemplateMapping(); GeneratedProviderResult generatedProviderResult = GetGeneratedProviderResult(provider); string generatedProviderDocumentContent = _publishedProviderContentsGenerator.GenerateContents(publishedProviderVersion, templateMetadataContents, templateMapping); PublishProviderDocument(options, publishedProviderVersion, generatedProviderDocumentContent); } int fundingIndex = 0; foreach (IGrouping <(string, string, string), Provider> groupingKey in records.GroupBy(provider => (provider.LACode, provider.MajorVersionNo, provider.AllocationID))) { OrganisationGroupLookupParameters organisationGroupLookupParameters = new OrganisationGroupLookupParameters { OrganisationGroupTypeCode = GetOrganisationGroupTypeCode(groupingKey.Key.Item3), IdentifierValue = groupingKey.Key.Item1, GroupTypeIdentifier = CalculateFunding.Common.ApiClient.Policies.Models.OrganisationGroupTypeIdentifier.LACode, ProviderVersionId = options.ProviderVersion }; IEnumerable <ProviderApiClient> apiClientProviders = GetApiClientProviders(groupingKey); TargetOrganisationGroup targetOrganisationGroup = null; try { targetOrganisationGroup = await organisationGroupTargetProviderLookup.GetTargetProviderDetails(organisationGroupLookupParameters, Common.ApiClient.Policies.Models.GroupingReason.Payment, apiClientProviders); } catch (Exception ex) { string message = $"Could not find provider with ID:{organisationGroupLookupParameters.IdentifierValue} with error message {ex}"; _logger.Error(message); Console.WriteLine(message); continue; } PublishedFundingVersion publishedFundingVersion = GetPublishedFundingVersion(groupingKey, targetOrganisationGroup, fundingIndex); Common.TemplateMetadata.Models.TemplateMetadataContents templateMetadataContents = GetFundingTemplateMetadataContents(); string generatedFundingDocumentContent = _publishedFundingContentsGenerator.GenerateContents(publishedFundingVersion, templateMetadataContents); PublishFundingDocument(options, publishedFundingVersion, generatedFundingDocumentContent); fundingIndex++; } _logger.Information("NAV Data generation completed."); return(1); }
public async Task WhenLookingUpTargetOrganisationGroupBasedOnLocalAuthorityInformation_ThenTargetOrganisationGroupReturned() { IEnumerable <Provider> scopedProviders = GenerateScopedProviders(); OrganisationGroupLookupParameters organisationGroupLookupParameters = new OrganisationGroupLookupParameters { GroupTypeIdentifier = Common.ApiClient.Policies.Models.OrganisationGroupTypeIdentifier.LACode, OrganisationGroupTypeCode = Common.ApiClient.Policies.Models.OrganisationGroupTypeCode.LocalAuthority }; TargetOrganisationGroup group = await _organisationGroupTargetProviderLookup.GetTargetProviderDetails(organisationGroupLookupParameters, Common.ApiClient.Policies.Models.GroupingReason.Information, scopedProviders.Where(_ => _.TrustStatus != TrustStatus.SupportedByAMultiAcademyTrust)); group.Identifiers.Any(); group.Name .Should() .Be("Local Authority 1"); group.Identifier .Should() .Be("101"); group.Identifiers.Count() .Should() .Be(2); group.Identifiers.Any(_ => _.Type == Enums.OrganisationGroupTypeIdentifier.LACode) .Should() .Be(true); group.Identifiers.Any(_ => _.Type == Enums.OrganisationGroupTypeIdentifier.UKPRN) .Should() .Be(true); group.Identifiers.Should().ContainEquivalentOf(new OrganisationIdentifier() { Type = Enums.OrganisationGroupTypeIdentifier.LACode, Value = "101" }); group.Identifiers.Should().ContainEquivalentOf(new OrganisationIdentifier() { Type = Enums.OrganisationGroupTypeIdentifier.UKPRN, Value = "LA101" }); }
public void WhenLookingUpTargetOrganisationGroupBasedOnUnknownGroupTypeInformation_ThenExceptionThrown() { IEnumerable <Provider> scopedProviders = GenerateScopedProviders(); OrganisationGroupLookupParameters organisationGroupLookupParameters = new OrganisationGroupLookupParameters { GroupTypeIdentifier = Common.ApiClient.Policies.Models.OrganisationGroupTypeIdentifier.UID, OrganisationGroupTypeCode = Common.ApiClient.Policies.Models.OrganisationGroupTypeCode.District }; Func <Task <TargetOrganisationGroup> > action = async() => await _organisationGroupTargetProviderLookup.GetTargetProviderDetails(organisationGroupLookupParameters, Common.ApiClient.Policies.Models.GroupingReason.Information, scopedProviders.Where(_ => _.TrustStatus != TrustStatus.SupportedByAMultiAcademyTrust)); action.Should().Throw <Exception>().WithMessage("Unable to resolve field to identifier value"); }
public void WhenLookingUpTargetOrganisationGroupBasedOnUnknownIdentifierPayment_ThenExceptionIsThrown() { IEnumerable <Provider> scopedProviders = GenerateScopedProviders(); OrganisationGroupLookupParameters organisationGroupLookupParameters = new OrganisationGroupLookupParameters { IdentifierValue = "1002", OrganisationGroupTypeCode = Common.ApiClient.Policies.Models.OrganisationGroupTypeCode.AcademyTrust, ProviderVersionId = _providerVersionId }; Func <Task> action = async() => await _organisationGroupTargetProviderLookup.GetTargetProviderDetails(organisationGroupLookupParameters, Common.ApiClient.Policies.Models.GroupingReason.Payment, new List <Provider> { }); action.Should().Throw <Exception>().WithMessage("Unable to find target provider, given the OrganisationGroupTypeCode. Identifier = '1002'. OrganisationGroupTypeCode= 'AcademyTrust'"); }
public void WhenLookingUpTargetOrganisationGroupBasedOnNoGroupTypeCodePayment_ThenExceptionIsThrown() { IEnumerable <Provider> scopedProviders = GenerateScopedProviders(); OrganisationGroupLookupParameters organisationGroupLookupParameters = new OrganisationGroupLookupParameters { IdentifierValue = "1002", ProviderVersionId = _providerVersionId }; Func <Task> action = async() => await _organisationGroupTargetProviderLookup.GetTargetProviderDetails(organisationGroupLookupParameters, Common.ApiClient.Policies.Models.GroupingReason.Payment, new List <Provider> { scopedProviders.Where(_ => _.TrustCode == "102").First() }); action.Should().Throw <Exception>().WithMessage("Unable to lookup target provider, no OrganisationGroupTypeCode given"); }
public async Task WhenLookingUpTargetOrganisationGroupBasedOnLocalAuthorityPayment_ThenTargetOrganisationGroupReturned() { IEnumerable <Provider> scopedProviders = GenerateScopedProviders(); OrganisationGroupLookupParameters organisationGroupLookupParameters = new OrganisationGroupLookupParameters { IdentifierValue = "101", OrganisationGroupTypeCode = Common.ApiClient.Policies.Models.OrganisationGroupTypeCode.LocalAuthority, ProviderVersionId = _providerVersionId }; TargetOrganisationGroup group = await _organisationGroupTargetProviderLookup.GetTargetProviderDetails( organisationGroupLookupParameters, Common.ApiClient.Policies.Models.GroupingReason.Payment, new List <Provider> { scopedProviders.Where(_ => _.TrustCode == "101").First() }); group.Identifiers.Any(); group.Name .Should() .Be("Provider 1"); group.Identifier .Should() .Be("1001"); group.Identifiers.Count() .Should() .Be(3); group.Identifiers.Any(_ => _.Type == Enums.OrganisationGroupTypeIdentifier.UKPRN) .Should() .Be(true); group.Identifiers.Any(_ => _.Type == Enums.OrganisationGroupTypeIdentifier.LACode) .Should() .Be(true); group.Identifiers.Any(_ => _.Type == Enums.OrganisationGroupTypeIdentifier.DfeNumber) .Should() .Be(true); }
public async Task <int> Generate(FeedOptions options) { IEnumerable <Provider> records = GetRecords(options.InputFilePath); foreach (Provider provider in records) { PublishedProviderVersion publishedProviderVersion = GetPublishedProviderVersion(provider); Common.TemplateMetadata.Models.TemplateMetadataContents templateMetadataContents = GetProviderTemplateMetadataContents(); TemplateMapping templateMapping = GetTemplateMapping(); GeneratedProviderResult generatedProviderResult = GetGeneratedProviderResult(provider); string generatedProviderDocumentContent = _publishedProviderContentsGenerator.GenerateContents(publishedProviderVersion, templateMetadataContents, templateMapping); PublishProviderDocument(options, publishedProviderVersion, generatedProviderDocumentContent); } int fundingIndex = 0; foreach (IGrouping <string, Provider> laGroup in records.GroupBy(x => x.ProviderLaCode)) { OrganisationGroupLookupParameters organisationGroupLookupParameters = new OrganisationGroupLookupParameters { OrganisationGroupTypeCode = Common.ApiClient.Policies.Models.OrganisationGroupTypeCode.LocalAuthority, IdentifierValue = laGroup.Key, GroupTypeIdentifier = Common.ApiClient.Policies.Models.OrganisationGroupTypeIdentifier.LACode, ProviderVersionId = options.ProviderVersion }; IEnumerable <ProviderApiClient> apiClientProviders = GetApiClientProviders(laGroup); TargetOrganisationGroup targetOrganisationGroup = await organisationGroupTargetProviderLookup.GetTargetProviderDetails(organisationGroupLookupParameters, Common.ApiClient.Policies.Models.GroupingReason.Payment, apiClientProviders); PublishedFundingVersion publishedFundingVersion = GetPublishedFundingVersion(laGroup, targetOrganisationGroup, fundingIndex); Common.TemplateMetadata.Models.TemplateMetadataContents templateMetadataContents = GetFundingTemplateMetadataContents(); string generatedFundingDocumentContent = _publishedFundingContentsGenerator.GenerateContents(publishedFundingVersion, templateMetadataContents); PublishFundingDocument(options, publishedFundingVersion, generatedFundingDocumentContent); fundingIndex++; } _logger.Information("NAV Data generation completed."); return(1); }