Example #1
0
        public void SetUp()
        {
            IPublishedFundingContentsGeneratorResolver publishedFundingContentsGeneratorResolver = Substitute.For <IPublishedFundingContentsGeneratorResolver>();
            IConfiguration configuration = Substitute.For <IConfiguration>();

            _blobClient = Substitute.For <IBlobClient>();
            _publishedFundingContentsGenerator = Substitute.For <IPublishedFundingContentsGenerator>();
            _templateMetadataContents          = new Common.TemplateMetadata.Models.TemplateMetadataContents {
                SchemaVersion = _schema
            };

            publishedFundingContentsGeneratorResolver.GetService(Arg.Is(_schema))
            .Returns(_publishedFundingContentsGenerator);

            _publishedFundingContentsPersistanceService = new PublishedFundingContentsPersistanceService(
                publishedFundingContentsGeneratorResolver,
                _blobClient, PublishingResilienceTestHelper.GenerateTestPolicies(),
                new PublishingEngineOptions(configuration));

            _cloudBlob = Substitute.For <ICloudBlob>();

            _publishedFundingPeriod = new PublishedFundingPeriod {
                Type = PublishedFundingPeriodType.AY, Period = "123"
            };
        }
Example #2
0
        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);
        }
Example #3
0
        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);
        }