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); }
private string GetProviderSpecMonitor(AppsAdditionalPaymentLearnerInfo learner, string providerSpecifiedLearnerMonitoring) { return(learner?.ProviderSpecLearnerMonitorings.FirstOrDefault(x => x.ProvSpecLearnMonOccur.CaseInsensitiveEquals(providerSpecifiedLearnerMonitoring))?.ProvSpecLearnMon); }
public IEnumerable <AppsAdditionalPaymentExtendedPaymentModel> BuildAdditionalPaymentsExtendedPaymentsModel( IDictionary <string, AppsAdditionalPaymentLearnerInfo> learnerDictionary, IList <AECLearningDeliveryInfo> rulebaseLearningDeliveries, IList <DASPaymentInfo> appsAdditionalPaymentDasPaymentsInfo, IDictionary <long, string> legalNameDictionary) { // Create a new payment model which includes the related data from the ILR return(appsAdditionalPaymentDasPaymentsInfo .Where(p => p != null) .Select(dasPaymentInfo => { AppsAdditionalPaymentLearnerInfo learner = null; AppsAdditionalPaymentLearningDeliveryInfo learningDelivery = null; AECLearningDeliveryInfo aecLearningDelivery = null; // lookup the related reference data for this payment learner = learnerDictionary.GetValueOrDefault(dasPaymentInfo?.LearnerReferenceNumber); if (learner != null) { learningDelivery = learner?.LearningDeliveries?.FirstOrDefault(x => x != null && x.ProgType == dasPaymentInfo.LearningAimProgrammeType && x.StdCode == dasPaymentInfo.LearningAimStandardCode && x.FworkCode == dasPaymentInfo.LearningAimFrameworkCode && x.PwayCode == dasPaymentInfo.LearningAimPathwayCode && x.LearnRefNumber.CaseInsensitiveEquals(dasPaymentInfo.LearnerReferenceNumber) && x.LearnAimRef.CaseInsensitiveEquals(dasPaymentInfo.LearningAimReference) && x.LearnStartDate == dasPaymentInfo.LearningStartDate); if (learningDelivery != null) { aecLearningDelivery = rulebaseLearningDeliveries?.FirstOrDefault(x => x != null && x.UKPRN == learningDelivery.UKPRN && x.LearnRefNumber.CaseInsensitiveEquals(learningDelivery.LearnRefNumber) && x.AimSeqNumber == learningDelivery.AimSeqNumber); } } // copy this payment's fields to the new extended payment model return new AppsAdditionalPaymentExtendedPaymentModel { // copy the reporting grouping fields PaymentLearnerReferenceNumber = dasPaymentInfo.LearnerReferenceNumber, PaymentUniqueLearnerNumber = dasPaymentInfo.LearnerUln, PaymentLearningStartDate = dasPaymentInfo.LearningStartDate, PaymentLearningAimFundingLineType = dasPaymentInfo.LearningAimFundingLineType, PaymentTypeOfAdditionalPayment = GetTypeOfAdditionalPayment(dasPaymentInfo.TransactionType), AppsServiceEmployerName = GetAppServiceEmployerName(dasPaymentInfo, legalNameDictionary), ilrEmployerIdentifier = aecLearningDelivery != null ? GetEmployerIdentifier(aecLearningDelivery, dasPaymentInfo.TransactionType) : null, // copy the remaining payment fields PaymentLearningAimProgrammeType = dasPaymentInfo.LearningAimProgrammeType, PaymentLearningAimStandardCode = dasPaymentInfo.LearningAimStandardCode, PaymentLearningAimFrameworkCode = dasPaymentInfo.LearningAimFrameworkCode, PaymentLearningAimPathwayCode = dasPaymentInfo.LearningAimPathwayCode, PaymentLearningAimReference = dasPaymentInfo.LearningAimReference, PaymentContractType = dasPaymentInfo.ContractType, PaymentFundingSource = dasPaymentInfo.FundingSource, PaymentTransactionType = dasPaymentInfo.TransactionType, PaymentAcademicYear = dasPaymentInfo.AcademicYear, PaymentCollectionPeriod = dasPaymentInfo.CollectionPeriod, //PaymentDeliveryPeriod = dasPaymentInfo.DeliveryPeriod, PaymentAmount = dasPaymentInfo.Amount, // copy the ilr fields ProviderSpecifiedLearnerMonitoringA = GetProviderSpecMonitor(learner, Generics.ProviderSpecifiedLearnerMonitoringA), ProviderSpecifiedLearnerMonitoringB = GetProviderSpecMonitor(learner, Generics.ProviderSpecifiedLearnerMonitoringB), }; })); }