Пример #1
0
        private void SetFundingLineOnPublishedProvider(string fundingLineCode, Table table, PublishedProvider publishedProvider)
        {
            publishedProvider
            .Should()
            .NotBeNull();

            FundingLine fundingLine =
                publishedProvider.Current.FundingLines.SingleOrDefault(f =>
                                                                       f.FundingLineCode == fundingLineCode && f.Type == FundingLineType.Payment);

            fundingLine
            .Should()
            .NotBeNull($"funding line should exist with code '{fundingLineCode}'");

            List <DistributionPeriod> distributionPeriods = new List <DistributionPeriod>();

            if (fundingLine.DistributionPeriods.AnyWithNullCheck())
            {
                distributionPeriods.AddRange(fundingLine.DistributionPeriods);
            }

            distributionPeriods.AddRange(table.CreateSet <DistributionPeriod>());

            fundingLine.DistributionPeriods = distributionPeriods;
        }
Пример #2
0
        private void SetProfilePeriodsOnPublishedProvider(string fundingLineCode, Table table, PublishedProvider publishedProvider)
        {
            publishedProvider
            .Should()
            .NotBeNull();

            FundingLine fundingLine =
                publishedProvider.Current.FundingLines.SingleOrDefault(f =>
                                                                       f.FundingLineCode == fundingLineCode && f.Type == FundingLineType.Payment);

            fundingLine
            .Should()
            .NotBeNull($"funding line should exist with code '{fundingLineCode}'");

            Dictionary <string, DistributionPeriod> distributionPeriods = new Dictionary <string, DistributionPeriod>();

            if (fundingLine.DistributionPeriods.AnyWithNullCheck())
            {
                foreach (DistributionPeriod distributionPeriod in fundingLine.DistributionPeriods)
                {
                    distributionPeriods.Add(distributionPeriod.DistributionPeriodId, distributionPeriod);
                }
            }

            IEnumerable <ProfilePeriod> profilePeriods = table.CreateSet <ProfilePeriod>();

            foreach (ProfilePeriod profilePeriod in profilePeriods)
            {
                distributionPeriods
                .Should()
                .ContainKey(profilePeriod.DistributionPeriodId, "expected distribution period to exist to add profile to");

                DistributionPeriod distributionPeriod = distributionPeriods[profilePeriod.DistributionPeriodId];

                List <ProfilePeriod> profilePeriodsForDistributionPeriod = new List <ProfilePeriod>();
                if (distributionPeriod.ProfilePeriods.AnyWithNullCheck())
                {
                    profilePeriodsForDistributionPeriod.AddRange(distributionPeriod.ProfilePeriods);
                }

                profilePeriodsForDistributionPeriod.Add(profilePeriod);

                distributionPeriod.ProfilePeriods = profilePeriodsForDistributionPeriod;
            }

            _publishFundingStepContext.ProfilingInMemoryClient.AddFundingValueProfileSplit(
                (fundingLine.Value,
                 publishedProvider.Current.FundingStreamId,
                 publishedProvider.Current.FundingPeriodId,
                 fundingLine.FundingLineCode,
                 profilePeriods.Select(_ =>
                                       new Common.ApiClient.Profiling.Models.ProfilingPeriod
            {
                DistributionPeriod = _.DistributionPeriodId,
                Occurrence = _.Occurrence,
                Type = _.Type.ToString(),
                Period = _.TypeValue,
                Value = _.ProfiledValue,
                Year = _.Year
            }),
                 distributionPeriods.Values.Select(_ =>
                                                   new Common.ApiClient.Profiling.Models.DistributionPeriods
            {
                DistributionPeriodCode = _.DistributionPeriodId,
                Value = _.Value
            })));
        }