public bool EarningsAttributeFilter(AECApprenticeshipPriceEpisodePeriodisedValuesInfo periodisedValues, string paymentType)
        {
            if (paymentType.CaseInsensitiveEquals(EmployerPaymentType) &&
                (periodisedValues.AttributeName.CaseInsensitiveEquals(Generics.Fm36PriceEpisodeFirstEmp1618PayAttributeName) ||
                 periodisedValues.AttributeName.CaseInsensitiveEquals(Generics.Fm36PriceEpisodeSecondEmp1618PayAttributeName)))
            {
                return(true);
            }

            if (paymentType.CaseInsensitiveEquals(ProviderPaymentType) &&
                (periodisedValues.AttributeName.CaseInsensitiveEquals(Generics.Fm36PriceEpisodeFirstProv1618PayAttributeName) ||
                 periodisedValues.AttributeName.CaseInsensitiveEquals(Generics.Fm36PriceEpisodeSecondProv1618PayAttributeName)))
            {
                return(true);
            }

            if (paymentType == ApprenticePaymentType && periodisedValues.AttributeName == Generics.Fm36PriceEpisodeLearnerAdditionalPaymentAttributeName)
            {
                return(true);
            }

            return(false);
        }
        public async Task <AppsAdditionalPaymentRulebaseInfo> GetFM36DataForAppsAdditionalPaymentReportAsync(int ukPrn, CancellationToken cancellationToken)
        {
            var appsAdditionalPaymentRulebaseInfo = new AppsAdditionalPaymentRulebaseInfo()
            {
                UkPrn = ukPrn,
                AECApprenticeshipPriceEpisodePeriodisedValues = new List <AECApprenticeshipPriceEpisodePeriodisedValuesInfo>(),
                AECLearningDeliveries = new List <AECLearningDeliveryInfo>()
            };

            cancellationToken.ThrowIfCancellationRequested();

            List <AEC_ApprenticeshipPriceEpisode> aecApprenticeshipPriceEpisodes;
            List <AEC_LearningDelivery>           aecLearningDeliveries;

            using (var ilrContext = _ilrRulebaseContextFactory())
            {
                aecApprenticeshipPriceEpisodes = await ilrContext.AEC_ApprenticeshipPriceEpisodes.Include(x => x.AEC_ApprenticeshipPriceEpisode_PeriodisedValues).Where(x => x.UKPRN == ukPrn).ToListAsync(cancellationToken);

                aecLearningDeliveries = await ilrContext.AEC_LearningDeliveries.Where(x => x.UKPRN == ukPrn).ToListAsync(cancellationToken);
            }

            foreach (var aecApprenticeshipPriceEpisode in aecApprenticeshipPriceEpisodes)
            {
                foreach (var aecApprenticeshipPriceEpisodePeriodisedValue in aecApprenticeshipPriceEpisode
                         .AEC_ApprenticeshipPriceEpisode_PeriodisedValues)
                {
                    var periodisedValue = new AECApprenticeshipPriceEpisodePeriodisedValuesInfo()
                    {
                        UKPRN          = ukPrn,
                        LearnRefNumber = aecApprenticeshipPriceEpisodePeriodisedValue.LearnRefNumber,
                        AimSeqNumber   = (int)aecApprenticeshipPriceEpisode.PriceEpisodeAimSeqNumber,
                        AttributeName  = aecApprenticeshipPriceEpisodePeriodisedValue.AttributeName,
                        Periods        = new[]
                        {
                            aecApprenticeshipPriceEpisodePeriodisedValue.Period_1.GetValueOrDefault(),
                         aecApprenticeshipPriceEpisodePeriodisedValue.Period_2.GetValueOrDefault(),
                         aecApprenticeshipPriceEpisodePeriodisedValue.Period_3.GetValueOrDefault(),
                         aecApprenticeshipPriceEpisodePeriodisedValue.Period_4.GetValueOrDefault(),
                         aecApprenticeshipPriceEpisodePeriodisedValue.Period_5.GetValueOrDefault(),
                         aecApprenticeshipPriceEpisodePeriodisedValue.Period_6.GetValueOrDefault(),
                         aecApprenticeshipPriceEpisodePeriodisedValue.Period_7.GetValueOrDefault(),
                         aecApprenticeshipPriceEpisodePeriodisedValue.Period_8.GetValueOrDefault(),
                         aecApprenticeshipPriceEpisodePeriodisedValue.Period_9.GetValueOrDefault(),
                         aecApprenticeshipPriceEpisodePeriodisedValue.Period_10.GetValueOrDefault(),
                         aecApprenticeshipPriceEpisodePeriodisedValue.Period_11.GetValueOrDefault(),
                         aecApprenticeshipPriceEpisodePeriodisedValue.Period_12.GetValueOrDefault(),
                        }
                    };
                    appsAdditionalPaymentRulebaseInfo.AECApprenticeshipPriceEpisodePeriodisedValues.Add(periodisedValue);
                }
            }

            foreach (var aecLearningDelivery in aecLearningDeliveries)
            {
                var aecLearningDeliveryInfo = new AECLearningDeliveryInfo()
                {
                    UKPRN          = ukPrn,
                    LearnRefNumber = aecLearningDelivery.LearnRefNumber,
                    AimSeqNumber   = aecLearningDelivery.AimSeqNumber,
                    LearnDelEmpIdFirstAdditionalPaymentThreshold  = aecLearningDelivery.LearnDelEmpIdFirstAdditionalPaymentThreshold,
                    LearnDelEmpIdSecondAdditionalPaymentThreshold = aecLearningDelivery.LearnDelEmpIdSecondAdditionalPaymentThreshold
                };

                appsAdditionalPaymentRulebaseInfo.AECLearningDeliveries.Add(aecLearningDeliveryInfo);
            }

            return(appsAdditionalPaymentRulebaseInfo);
        }