public static PaymentCreatedMessage CreatePayment(ILog logger, EmployerPayment payment)
        {
            if (payment == null)
            {
                logger.Warn("No payment passed to PaymentCreatedMessage");
                return(null);
            }

            return(new PaymentCreatedMessage
            {
                Id = payment.PaymentId.ToString(),
                EmployerAccountId = payment.AccountId,
                Ukprn = payment.Ukprn,
                ApprenticeshipId = payment.ApprenticeshipId,
                Amount = payment.Amount,
                ProviderName = payment.ProviderName,
                ApprenticeName = payment.ApprenticeName,
                CourseName = payment.ApprenticeshipCourseName,
                CourseLevel = payment.ApprenticeshipCourseLevel,
                Uln = payment.Uln,
                CourseStartDate = payment.ApprenticeshipCourseStartDate,
                CollectionPeriod = new Application.Payments.Messages.NamedCalendarPeriod {
                    Id = payment.CollectionPeriodId, Year = payment.CollectionPeriodYear, Month = payment.CollectionPeriodMonth
                },
                DeliveryPeriod = new Application.Payments.Messages.CalendarPeriod {
                    Month = payment.DeliveryPeriodMonth, Year = payment.DeliveryPeriodYear
                },
                FundingSource = payment.FundingSource,
                SendingEmployerAccountId = payment.SenderAccountId ?? payment.AccountId
            });
        }
示例#2
0
        private async Task StorePayment(CloudTable cloudTable, EmployerPayment payment)
        {
            EnsureExists(cloudTable);

            var tableModel = new TableEntry
            {
                PartitionKey = payment.AccountId.ToString(),
                RowKey       = payment.PaymentId.ToString().ToLower(),
                Data         = JsonConvert.SerializeObject(payment)
            };

            var op = TableOperation.InsertOrReplace(tableModel);

            await cloudTable.ExecuteAsync(op);
        }
        public static PaymentCreatedMessage CreatePayment(ILog logger, EmployerPayment payment, IEnumerable <EarningDetails> earningDetails)
        {
            if (payment == null)
            {
                logger.Warn("No payment passed to CreatePaymentSubstituteData");
                return(null);
            }
            var earningDetail = earningDetails.FirstOrDefault(ed => Guid.TryParse(ed.PaymentId, out Guid paymentGuid) && paymentGuid == payment.PaymentId);

            if (ConfigurationHelper.IsDevOrAtEnvironment && earningDetail == null)
            {
                var random = new Random();
                earningDetail = earningDetails.Skip(random.Next(0, earningDetails.Count() - 1)).FirstOrDefault();
            }

            if (earningDetail == null)
            {
                logger.Warn($"No earning details found for payment: {payment.PaymentId}, apprenticeship: {payment.ApprenticeshipId}");
                return(null);
            }

            return(new PaymentCreatedMessage
            {
                Id = payment.PaymentId.ToString(),
                EmployerAccountId = payment.AccountId,
                Ukprn = payment.Ukprn,
                ApprenticeshipId = payment.ApprenticeshipId,
                Amount = payment.Amount,
                ProviderName = payment.ProviderName,
                ApprenticeName = payment.ApprenticeName,
                CourseName = payment.ApprenticeshipCourseName,
                CourseLevel = payment.ApprenticeshipCourseLevel,
                Uln = payment.Uln,
                CourseStartDate = payment.ApprenticeshipCourseStartDate,
                CollectionPeriod = new Application.Payments.Messages.NamedCalendarPeriod {
                    Id = payment.CollectionPeriodId, Year = payment.CollectionPeriodYear, Month = payment.CollectionPeriodMonth
                },
                DeliveryPeriod = new Application.Payments.Messages.CalendarPeriod {
                    Month = payment.DeliveryPeriodMonth, Year = payment.DeliveryPeriodYear
                },
                EarningDetails = earningDetail,
                FundingSource = payment.FundingSource,
                SendingEmployerAccountId = payment.SenderAccountId ?? payment.AccountId
            });
        }
        private async Task SetUpEmployerData()
        {
            var year  = 2017;
            var month = 5;
            var p2    = new EmployerPayment
            {
                Ukprn                         = 10001378,
                Uln                           = 2002,
                AccountId                     = _accountId,
                ApprenticeshipId              = 6666,
                CollectionPeriodId            = "1617-r10",
                CollectionPeriodMonth         = month,
                CollectionPeriodYear          = year,
                DeliveryPeriodMonth           = month,
                DeliveryPeriodYear            = year,
                Amount                        = 50.00000m,
                PaymentMetaDataId             = 690,
                ProviderName                  = "CHESTERFIELD COLLEGE",
                StandardCode                  = 4,
                FrameworkCode                 = 0,
                ProgrammeType                 = 0,
                PathwayCode                   = 0,
                PathwayName                   = null,
                ApprenticeshipCourseName      = "Chemical Engineering",
                ApprenticeshipCourseStartDate = DateTime.Parse("2017-01-09"),
                ApprenticeshipCourseLevel     = 2,
                ApprenticeName                = "John Doe",
                FundingSource                 = Models.Payments.FundingSource.Levy,
                PaymentId                     = Guid.Parse("f97840b3-d3bf-429c-bc3c-8a877f4f26f8") // Need to match Payment from ProviderEvents API // IN: ProviderEventTestData.cs
            };

            _tableStorageService.SetTable(_settings.StubEmployerPaymentTable);
            await _tableStorageService.Store(new List <EmployerPayment> {
                p2
            }, _accountId.ToString(), $"{year}-{month}");
        }
示例#5
0
 public async Task StorePaymentNoCommitment(EmployerPayment payment)
 {
     await StorePayment(_paymentTableNoCommitment, payment);
 }
示例#6
0
 public async Task StorePayment(EmployerPayment payment)
 {
     await StorePayment(_paymentTable, payment);
 }
        private static PaymentCreatedMessage CreatePaymentSubstituteData(ILog logger, EmployerPayment payment, IEnumerable <EarningDetails> earningDetails, long substitutionId)
        {
            if (payment == null)
            {
                logger.Warn("No payment passed to CreatePaymentSubstituteData");
                return(null);
            }

            var earningDetail = earningDetails.FirstOrDefault(ed => Guid.TryParse(ed.PaymentId, out Guid paymentGuid) && paymentGuid == payment.PaymentId);

            if (earningDetail == null)
            {
                logger.Warn($"No earning details found for payment: {payment.PaymentId}, apprenticeship: {payment.ApprenticeshipId}");
                return(null);
            }

            var apprenticeshipId = GetApprenticeshipId(payment.ApprenticeshipId);

            logger.Info($"Creating payment event for apprenticeship: {apprenticeshipId}, delivery period: {payment.DeliveryPeriodYear}-{payment.DeliveryPeriodMonth}, collection period: {payment.CollectionPeriodYear}-{payment.CollectionPeriodMonth}");
            earningDetail.RequiredPaymentId = Guid.NewGuid();

            return(new PaymentCreatedMessage
            {
                Id = Guid.NewGuid().ToString(),
                EmployerAccountId = substitutionId,
                Ukprn = 1,
                ApprenticeshipId = apprenticeshipId,
                Amount = payment.Amount,
                ProviderName = "Provider Name",
                ApprenticeName = "Apprentice Name",
                CourseName = payment.ApprenticeshipCourseName,
                CourseLevel = payment.ApprenticeshipCourseLevel,
                Uln = new Random(Guid.NewGuid().GetHashCode()).Next(10000, 9999999),
                CourseStartDate = payment.ApprenticeshipCourseStartDate,
                CollectionPeriod = new Application.Payments.Messages.NamedCalendarPeriod {
                    Id = payment.CollectionPeriodId, Year = payment.CollectionPeriodYear, Month = payment.CollectionPeriodMonth
                },
                DeliveryPeriod = new Application.Payments.Messages.CalendarPeriod {
                    Month = payment.DeliveryPeriodMonth, Year = payment.DeliveryPeriodYear
                },
                EarningDetails = earningDetail,
                FundingSource = payment.FundingSource,
                SendingEmployerAccountId = payment.SenderAccountId.HasValue ? 54321 : substitutionId //TODO: need to generate or pass in a valid substitute sender account for transfers
            });
        }