コード例 #1
0
        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),
                };
            }));
        }