public async Task <AppsMonthlyPaymentDASInfo> GetPaymentsInfoForAppsMonthlyPaymentReportAsync(
            int ukPrn,
            CancellationToken cancellationToken)
        {
            AppsMonthlyPaymentDASInfo appsMonthlyPaymentDasInfo = null;

            try
            {
                appsMonthlyPaymentDasInfo = new AppsMonthlyPaymentDASInfo
                {
                    UkPrn    = ukPrn,
                    Payments = new List <AppsMonthlyPaymentDasPaymentModel>()
                };

                cancellationToken.ThrowIfCancellationRequested();

                using (var context = _dasPaymentsContextFactory())
                {
                    appsMonthlyPaymentDasInfo.Payments = await context.Payments
                                                         .Where(x => x.Ukprn == ukPrn && x.AcademicYear == Generics.AcademicYear)
                                                         .Select(payment => new AppsMonthlyPaymentDasPaymentModel
                    {
                        Ukprn = (int?)payment.Ukprn,
                        LearnerReferenceNumber      = payment.LearnerReferenceNumber,
                        LearnerUln                  = payment.LearnerUln,
                        LearningAimReference        = payment.LearningAimReference,
                        LearningStartDate           = payment.LearningStartDate,
                        LearningAimProgrammeType    = payment.LearningAimProgrammeType,
                        LearningAimStandardCode     = payment.LearningAimStandardCode,
                        LearningAimFrameworkCode    = payment.LearningAimFrameworkCode,
                        LearningAimPathwayCode      = payment.LearningAimPathwayCode,
                        LearningAimFundingLineType  = payment.LearningAimFundingLineType,
                        ReportingAimFundingLineType = payment.ReportingAimFundingLineType,
                        PriceEpisodeIdentifier      = payment.PriceEpisodeIdentifier,
                        FundingSource               = payment.FundingSource,
                        TransactionType             = payment.TransactionType,
                        AcademicYear                = payment.AcademicYear,
                        CollectionPeriod            = payment.CollectionPeriod,
                        ContractType                = payment.ContractType,
                        DeliveryPeriod              = payment.DeliveryPeriod,
                        EarningEventId              = payment.EarningEventId,
                        Amount           = payment.Amount,
                        NonPaymentReason = payment.NonPaymentReason,
                        ApprenticeshipId = payment.ApprenticeshipId
                    })
                                                         .ToListAsync(cancellationToken);
                }
            }
            catch (Exception ex)
            {
                _logger.LogError("Failed to get Rulebase data", ex);
                throw;
            }

            return(appsMonthlyPaymentDasInfo);
        }
Esempio n. 2
0
        public async Task <AppsMonthlyPaymentDASInfo> GetPaymentsInfoForAppsMonthlyPaymentReportAsync(int ukPrn, CancellationToken cancellationToken)
        {
            var appsMonthlyPaymentDasInfo = new AppsMonthlyPaymentDASInfo
            {
                UkPrn    = ukPrn,
                Payments = new List <AppsMonthlyPaymentDASPaymentInfo>()
            };

            cancellationToken.ThrowIfCancellationRequested();

            List <Payment> paymentsList;

            using (var context = _dasPaymentsContextFactory())
            {
                paymentsList = await context.Payments.Where(x => x.Ukprn == ukPrn && x.FundingSource == FundingSource).ToListAsync(cancellationToken);
            }

            foreach (var payment in paymentsList)
            {
                var paymentInfo = new AppsMonthlyPaymentDASPaymentInfo
                {
                    LearnerReferenceNumber   = payment.LearnerReferenceNumber,
                    LearnerUln               = payment.LearnerUln,
                    LearningAimReference     = payment.LearningAimReference,
                    LearningAimProgrammeType = payment.LearningAimProgrammeType,
                    LearningAimStandardCode  = payment.LearningAimStandardCode,
                    LearningAimFrameworkCode = payment.LearningAimFrameworkCode,
                    LearningAimPathwayCode   = payment.LearningAimPathwayCode,
                    Amount = payment.Amount,
                    LearningAimFundingLineType = payment.LearningAimFundingLineType,
                    PriceEpisodeIdentifier     = payment.PriceEpisodeIdentifier,
                    FundingSource    = payment.FundingSource,
                    TransactionType  = payment.TransactionType,
                    AcademicYear     = payment.AcademicYear,
                    CollectionPeriod = payment.CollectionPeriod,
                    ContractType     = payment.ContractType,
                    DeliveryPeriod   = payment.DeliveryPeriod
                };

                appsMonthlyPaymentDasInfo.Payments.Add(paymentInfo);
            }

            return(appsMonthlyPaymentDasInfo);
        }
 public IDictionary <LearnerLevelViewPaymentsKey, List <AppsMonthlyPaymentDasPaymentModel> > BuildPaymentInfoDictionary(AppsMonthlyPaymentDASInfo paymentsInfo)
 {
     return(paymentsInfo
            .Payments
            .GroupBy(
                p => new LearnerLevelViewPaymentsKey(p.LearnerReferenceNumber, p.ReportingAimFundingLineType), new LLVPaymentRecordKeyEqualityComparer())
            .ToDictionary(k => k.Key, v => v.ToList()));
 }
        private AppsMonthlyPaymentDASInfo BuildDasPaymentsModel(int ukPrn)
        {
            var appsMonthlyPaymentDasInfo = new AppsMonthlyPaymentDASInfo()
            {
                UkPrn = ukPrn
            };

            appsMonthlyPaymentDasInfo.Payments = new List <AppsMonthlyPaymentDASPaymentInfo>();
            for (byte i = 1; i < 14; i++)
            {
                var levyPayments = new AppsMonthlyPaymentDASPaymentInfo()
                {
                    UkPrn = ukPrn,
                    LearnerReferenceNumber   = "A12345",
                    LearningAimReference     = "50117889",
                    LearnerUln               = 12345,
                    LearningStartDate        = new DateTime(2017, 06, 28),
                    LearningAimProgrammeType = 1,
                    LearningAimStandardCode  = 1,
                    LearningAimFrameworkCode = 1,
                    LearningAimPathwayCode   = 1,
                    FundingSource            = 1,
                    TransactionType          = 2,
                    AcademicYear             = 1819,
                    Amount                     = 11,
                    ContractType               = 2,
                    CollectionPeriod           = i,
                    DeliveryPeriod             = 1,
                    LearningAimFundingLineType = "16-18 Apprenticeship Non-Levy"
                };

                var coInvestmentPayments = new AppsMonthlyPaymentDASPaymentInfo()
                {
                    UkPrn = ukPrn,
                    LearnerReferenceNumber   = "A12345",
                    LearningAimReference     = "50117889",
                    LearnerUln               = 12345,
                    LearningStartDate        = new DateTime(2017, 06, 28),
                    LearningAimProgrammeType = 1,
                    LearningAimStandardCode  = 1,
                    LearningAimFrameworkCode = 1,
                    LearningAimPathwayCode   = 1,
                    FundingSource            = 2,
                    TransactionType          = 2,
                    AcademicYear             = 1819,
                    Amount                     = 12,
                    ContractType               = 2,
                    CollectionPeriod           = i,
                    DeliveryPeriod             = 1,
                    LearningAimFundingLineType = "16-18 Apprenticeship Non-Levy"
                };

                var coInvestmentDueFromEmployerPayments = new AppsMonthlyPaymentDASPaymentInfo()
                {
                    UkPrn = ukPrn,
                    LearnerReferenceNumber   = "A12345",
                    LearningAimReference     = "50117889",
                    LearnerUln               = 12345,
                    LearningStartDate        = new DateTime(2017, 06, 28),
                    LearningAimProgrammeType = 1,
                    LearningAimStandardCode  = 1,
                    LearningAimFrameworkCode = 1,
                    LearningAimPathwayCode   = 1,
                    FundingSource            = 3,
                    TransactionType          = 2,
                    AcademicYear             = 1819,
                    Amount                     = 13,
                    ContractType               = 2,
                    CollectionPeriod           = i,
                    DeliveryPeriod             = 1,
                    LearningAimFundingLineType = "16-18 Apprenticeship Non-Levy"
                };

                var employerAdditionalPayments = new AppsMonthlyPaymentDASPaymentInfo()
                {
                    UkPrn = ukPrn,
                    LearnerReferenceNumber   = "A12345",
                    LearningAimReference     = "50117889",
                    LearnerUln               = 12345,
                    LearningStartDate        = new DateTime(2017, 06, 28),
                    LearningAimProgrammeType = 1,
                    LearningAimStandardCode  = 1,
                    LearningAimFrameworkCode = 1,
                    LearningAimPathwayCode   = 1,
                    FundingSource            = 3,
                    TransactionType          = 4,
                    AcademicYear             = 1819,
                    Amount                     = 14,
                    ContractType               = 2,
                    CollectionPeriod           = i,
                    DeliveryPeriod             = 1,
                    LearningAimFundingLineType = "16-18 Apprenticeship Non-Levy"
                };

                var providerAdditionalPayments = new AppsMonthlyPaymentDASPaymentInfo()
                {
                    UkPrn = ukPrn,
                    LearnerReferenceNumber   = "A12345",
                    LearningAimReference     = "50117889",
                    LearnerUln               = 12345,
                    LearningStartDate        = new DateTime(2017, 06, 28),
                    LearningAimProgrammeType = 1,
                    LearningAimStandardCode  = 1,
                    LearningAimFrameworkCode = 1,
                    LearningAimPathwayCode   = 1,
                    FundingSource            = 3,
                    TransactionType          = 5,
                    AcademicYear             = 1819,
                    Amount                     = 15,
                    ContractType               = 2,
                    CollectionPeriod           = i,
                    DeliveryPeriod             = 1,
                    LearningAimFundingLineType = "16-18 Apprenticeship Non-Levy"
                };

                var apprenticeAdditionalPayments = new AppsMonthlyPaymentDASPaymentInfo()
                {
                    UkPrn = ukPrn,
                    LearnerReferenceNumber   = "A12345",
                    LearningAimReference     = "50117889",
                    LearnerUln               = 12345,
                    LearningStartDate        = new DateTime(2017, 06, 28),
                    LearningAimProgrammeType = 1,
                    LearningAimStandardCode  = 1,
                    LearningAimFrameworkCode = 1,
                    LearningAimPathwayCode   = 1,
                    FundingSource            = 3,
                    TransactionType          = 16,
                    AcademicYear             = 1819,
                    Amount                     = 16,
                    ContractType               = 2,
                    CollectionPeriod           = i,
                    DeliveryPeriod             = 1,
                    LearningAimFundingLineType = "16-18 Apprenticeship Non-Levy"
                };

                var englishAndMathsPayments = new AppsMonthlyPaymentDASPaymentInfo()
                {
                    UkPrn = ukPrn,
                    LearnerReferenceNumber   = "A12345",
                    LearningAimReference     = "50117889",
                    LearnerUln               = 12345,
                    LearningStartDate        = new DateTime(2017, 06, 28),
                    LearningAimProgrammeType = 1,
                    LearningAimStandardCode  = 1,
                    LearningAimFrameworkCode = 1,
                    LearningAimPathwayCode   = 1,
                    FundingSource            = 3,
                    TransactionType          = 13,
                    AcademicYear             = 1819,
                    Amount                     = 17,
                    ContractType               = 2,
                    CollectionPeriod           = i,
                    DeliveryPeriod             = 1,
                    LearningAimFundingLineType = "16-18 Apprenticeship Non-Levy"
                };

                var paymentsForLearningSupport = new AppsMonthlyPaymentDASPaymentInfo()
                {
                    UkPrn = ukPrn,
                    LearnerReferenceNumber   = "A12345",
                    LearningAimReference     = "50117889",
                    LearnerUln               = 12345,
                    LearningStartDate        = new DateTime(2017, 06, 28),
                    LearningAimProgrammeType = 1,
                    LearningAimStandardCode  = 1,
                    LearningAimFrameworkCode = 1,
                    LearningAimPathwayCode   = 1,
                    FundingSource            = 3,
                    TransactionType          = 8,
                    AcademicYear             = 1819,
                    Amount                     = 18,
                    ContractType               = 2,
                    CollectionPeriod           = i,
                    DeliveryPeriod             = 1,
                    LearningAimFundingLineType = "16-18 Apprenticeship Non-Levy"
                };

                appsMonthlyPaymentDasInfo.Payments.Add(levyPayments);
                appsMonthlyPaymentDasInfo.Payments.Add(coInvestmentPayments);
                appsMonthlyPaymentDasInfo.Payments.Add(coInvestmentDueFromEmployerPayments);
                appsMonthlyPaymentDasInfo.Payments.Add(employerAdditionalPayments);
                appsMonthlyPaymentDasInfo.Payments.Add(providerAdditionalPayments);
                appsMonthlyPaymentDasInfo.Payments.Add(apprenticeAdditionalPayments);
                appsMonthlyPaymentDasInfo.Payments.Add(englishAndMathsPayments);
                appsMonthlyPaymentDasInfo.Payments.Add(paymentsForLearningSupport);
            }

            return(appsMonthlyPaymentDasInfo);
        }