Пример #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);
        }
Пример #2
0
        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);
        }