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