public async Task <AppsAdditionalPaymentDasPaymentsInfo> GetPaymentsInfoForAppsAdditionalPaymentsReportAsync(int ukPrn, CancellationToken cancellationToken) { var appsAdditionalPaymentDasPaymentsInfo = new AppsAdditionalPaymentDasPaymentsInfo { UkPrn = ukPrn, Payments = new List <DASPaymentInfo>() }; cancellationToken.ThrowIfCancellationRequested(); List <Payment> paymentsList; using (var context = _dasPaymentsContextFactory()) { paymentsList = await context.Payments.Where(x => x.Ukprn == ukPrn && x.FundingSource == FundingSource && AppsAdditionalPaymentsTransactionTypes.Contains(x.TransactionType)).ToListAsync(cancellationToken); } foreach (var payment in paymentsList) { var paymentInfo = new DASPaymentInfo { FundingSource = payment.FundingSource, TransactionType = payment.TransactionType, AcademicYear = payment.AcademicYear, CollectionPeriod = payment.CollectionPeriod, ContractType = payment.ContractType, DeliveryPeriod = payment.DeliveryPeriod, LearnerReferenceNumber = payment.LearnerReferenceNumber, LearnerUln = payment.LearnerUln, LearningAimFrameworkCode = payment.LearningAimFrameworkCode, LearningAimPathwayCode = payment.LearningAimPathwayCode, LearningAimProgrammeType = payment.LearningAimProgrammeType, LearningAimReference = payment.LearningAimReference, LearningAimStandardCode = payment.LearningAimStandardCode, Amount = payment.Amount, LearningAimFundingLineType = payment.LearningAimFundingLineType, TypeOfAdditionalPayment = GetTypeOfAdditionalPayment(payment.TransactionType), EmployerName = string.Empty }; appsAdditionalPaymentDasPaymentsInfo.Payments.Add(paymentInfo); } return(appsAdditionalPaymentDasPaymentsInfo); }
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); }