public async Task <AppsAdditionalPaymentILRInfo> GetILRInfoForAppsAdditionalPaymentsReportAsync(int ukPrn, CancellationToken cancellationToken) { var appsAdditionalPaymentIlrInfo = new AppsAdditionalPaymentILRInfo() { UkPrn = ukPrn, Learners = new List <AppsAdditionalPaymentLearnerInfo>() }; cancellationToken.ThrowIfCancellationRequested(); List <Learner> learnersList; using (var ilrContext = _ilrValidContextFactory()) { learnersList = await ilrContext.Learners .Where(x => x.UKPRN == ukPrn && x.LearningDeliveries.Any(y => y.FundModel == ApprentishipsFundModel)) .ToListAsync(cancellationToken); } foreach (var learner in learnersList) { var learnerInfo = new AppsAdditionalPaymentLearnerInfo { LearnRefNumber = learner.LearnRefNumber, ULN = learner.ULN, LearningDeliveries = learner.LearningDeliveries.Select(x => new AppsAdditionalPaymentLearningDeliveryInfo() { UKPRN = ukPrn, LearnRefNumber = x.LearnRefNumber, LearnAimRef = x.LearnAimRef, AimType = x.AimType, LearnStartDate = x.LearnStartDate, ProgType = x.ProgType, StdCode = x.StdCode, FworkCode = x.FworkCode, PwayCode = x.PwayCode, AimSeqNumber = x.AimSeqNumber, FundModel = x.FundModel }).ToList(), ProviderSpecLearnerMonitorings = learner.ProviderSpecLearnerMonitorings.Select(x => new AppsAdditionalPaymentProviderSpecLearnerMonitoringInfo() { UKPRN = x.UKPRN, LearnRefNumber = x.LearnRefNumber, ProvSpecLearnMon = x.ProvSpecLearnMon, ProvSpecLearnMonOccur = x.ProvSpecLearnMonOccur }).ToList() }; appsAdditionalPaymentIlrInfo.Learners.Add(learnerInfo); } return(appsAdditionalPaymentIlrInfo); }
public List <AppsAdditionalPaymentsModel> BuildModel( AppsAdditionalPaymentILRInfo appsAdditionalPaymentIlrInfo, AppsAdditionalPaymentRulebaseInfo appsAdditionalPaymentRulebaseInfo, AppsAdditionalPaymentDasPaymentsInfo appsAdditionalPaymentDasPaymentsInfo) { List <AppsAdditionalPaymentsModel> appsAdditionalPaymentsModels = new List <AppsAdditionalPaymentsModel>(); foreach (var learner in appsAdditionalPaymentIlrInfo.Learners) { foreach (var paymentInfo in appsAdditionalPaymentDasPaymentsInfo.Payments) { var appsAdditionalPaymentLearningDeliveryInfo = learner.LearningDeliveries.SingleOrDefault(x => x.UKPRN == paymentInfo.UkPrn && x.LearnRefNumber == paymentInfo.LearnerReferenceNumber && x.LearnAimRef == paymentInfo.LearningAimReference && x.LearnStartDate == paymentInfo.LearningStartDate && x.ProgType == paymentInfo.LearningAimProgrammeType && x.StdCode == paymentInfo.LearningAimStandardCode && x.FworkCode == paymentInfo.LearningAimFrameworkCode && x.PwayCode == paymentInfo.LearningAimPathwayCode); var aecLearningDeliveryInfo = appsAdditionalPaymentRulebaseInfo.AECLearningDeliveries.SingleOrDefault(x => x.UKPRN == appsAdditionalPaymentLearningDeliveryInfo?.UKPRN && x.LearnRefNumber == appsAdditionalPaymentLearningDeliveryInfo.LearnRefNumber && x.AimSeqNumber == appsAdditionalPaymentLearningDeliveryInfo.AimSeqNumber); var aecApprenticeshipPriceEpisodePeriodisedValuesInfo = appsAdditionalPaymentRulebaseInfo.AECApprenticeshipPriceEpisodePeriodisedValues.Where(x => x.UKPRN == appsAdditionalPaymentLearningDeliveryInfo?.UKPRN && x.LearnRefNumber == appsAdditionalPaymentLearningDeliveryInfo.LearnRefNumber && x.AimSeqNumber == appsAdditionalPaymentLearningDeliveryInfo.AimSeqNumber).ToList(); var model = new AppsAdditionalPaymentsModel() { LearnerReferenceNumber = paymentInfo.LearnerReferenceNumber, UniqueLearnerNumber = paymentInfo.LearnerUln, ProviderSpecifiedLearnerMonitoringA = learner.ProviderSpecLearnerMonitorings?.SingleOrDefault(psm => string.Equals(psm.ProvSpecLearnMonOccur, "A", StringComparison.OrdinalIgnoreCase))?.ProvSpecLearnMon, ProviderSpecifiedLearnerMonitoringB = learner.ProviderSpecLearnerMonitorings?.SingleOrDefault(psm => string.Equals(psm.ProvSpecLearnMonOccur, "B", StringComparison.OrdinalIgnoreCase))?.ProvSpecLearnMon, LearningStartDate = paymentInfo.LearningStartDate, FundingLineType = paymentInfo.LearningAimFundingLineType, EmployerNameFromApprenticeshipService = paymentInfo.EmployerName, EmployerIdentifierFromILR = GetEmployerIdentifier(aecLearningDeliveryInfo, paymentInfo), TypeOfAdditionalPayment = paymentInfo.TypeOfAdditionalPayment, AugustEarnings = GetMonthlyEarnings(paymentInfo, aecApprenticeshipPriceEpisodePeriodisedValuesInfo, 0), SeptemberEarnings = GetMonthlyEarnings(paymentInfo, aecApprenticeshipPriceEpisodePeriodisedValuesInfo, 1), OctoberEarnings = GetMonthlyEarnings(paymentInfo, aecApprenticeshipPriceEpisodePeriodisedValuesInfo, 2), NovemberEarnings = GetMonthlyEarnings(paymentInfo, aecApprenticeshipPriceEpisodePeriodisedValuesInfo, 3), DecemberEarnings = GetMonthlyEarnings(paymentInfo, aecApprenticeshipPriceEpisodePeriodisedValuesInfo, 4), JanuaryEarnings = GetMonthlyEarnings(paymentInfo, aecApprenticeshipPriceEpisodePeriodisedValuesInfo, 5), FebruaryEarnings = GetMonthlyEarnings(paymentInfo, aecApprenticeshipPriceEpisodePeriodisedValuesInfo, 6), MarchEarnings = GetMonthlyEarnings(paymentInfo, aecApprenticeshipPriceEpisodePeriodisedValuesInfo, 7), AprilEarnings = GetMonthlyEarnings(paymentInfo, aecApprenticeshipPriceEpisodePeriodisedValuesInfo, 8), MayEarnings = GetMonthlyEarnings(paymentInfo, aecApprenticeshipPriceEpisodePeriodisedValuesInfo, 9), JuneEarnings = GetMonthlyEarnings(paymentInfo, aecApprenticeshipPriceEpisodePeriodisedValuesInfo, 10), JulyEarnings = GetMonthlyEarnings(paymentInfo, aecApprenticeshipPriceEpisodePeriodisedValuesInfo, 11), AugustR01Payments = GetMonthlyPayments(paymentInfo, "1819-R01"), SeptemberR02Payments = GetMonthlyPayments(paymentInfo, "1819-R02"), OctoberR03Payments = GetMonthlyPayments(paymentInfo, "1819-R03"), NovemberR04Payments = GetMonthlyPayments(paymentInfo, "1819-R04"), DecemberR05Payments = GetMonthlyPayments(paymentInfo, "1819-R05"), JanuaryR06Payments = GetMonthlyPayments(paymentInfo, "1819-R06"), FebruaryR07Payments = GetMonthlyPayments(paymentInfo, "1819-R07"), MarchR08Payments = GetMonthlyPayments(paymentInfo, "1819-R08"), AprilR09Payments = GetMonthlyPayments(paymentInfo, "1819-R09"), MayR10Payments = GetMonthlyPayments(paymentInfo, "1819-R10"), JuneR11Payments = GetMonthlyPayments(paymentInfo, "1819-R11"), JulyR12Payments = GetMonthlyPayments(paymentInfo, "1819-R12"), R13Payments = GetMonthlyPayments(paymentInfo, "1819-R13"), R14Payments = GetMonthlyPayments(paymentInfo, "1819-R14") }; model.TotalEarnings = BuildTotalEarnings(model); model.TotalPaymentsYearToDate = BuildTotalTotalPayments(model); appsAdditionalPaymentsModels.Add(model); } } appsAdditionalPaymentsModels = BuildAppsAdditionalPaymentsResultModel(appsAdditionalPaymentsModels); return(appsAdditionalPaymentsModels); }