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 }); }
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}"); }
public async Task StorePaymentNoCommitment(EmployerPayment payment) { await StorePayment(_paymentTableNoCommitment, payment); }
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 }); }