public void when_amount_spent_attained_then_promotion_unlocked() { var accountId = Guid.NewGuid(); var orderId1 = Guid.NewGuid(); var orderId2 = Guid.NewGuid(); var newOrderStatus = new OrderStatusChanged { IsCompleted = true, Status = new OrderStatusDetail { AccountId = accountId, Status = OrderStatus.Completed } }; var newPaymentInit = new CreditCardPaymentInitiated { Meter = (decimal)15.31 }; var newPayment = new CreditCardPaymentCaptured_V2 { FeeType = FeeTypes.None, Meter = (decimal)15.31, AuthorizationCode = Guid.NewGuid().ToString(), AccountId = accountId }; _orderCreatedCommand.AccountId = accountId; _orderCreatedCommand.SourceId = orderId1; newOrderStatus.SourceId = orderId1; newPaymentInit.SourceId = orderId1; newPaymentInit.OrderId = orderId1; newPayment.SourceId = orderId1; newPayment.OrderId = orderId1; OrderGenerator.Handle(_orderCreatedCommand); OrderGenerator.Handle(newOrderStatus); CreditCardGenerator.Handle(newPaymentInit); CreditCardGenerator.Handle(newPayment); TriggerSut.Handle(newPayment); _orderCreatedCommand.SourceId = orderId2; newOrderStatus.SourceId = orderId2; newPaymentInit.SourceId = orderId2; newPaymentInit.OrderId = orderId2; newPayment.SourceId = orderId2; newPayment.OrderId = orderId2; OrderGenerator.Handle(_orderCreatedCommand); OrderGenerator.Handle(newOrderStatus); CreditCardGenerator.Handle(newPaymentInit); CreditCardGenerator.Handle(newPayment); TriggerSut.Handle(newPayment); var commands = Commands.OfType <AddUserToPromotionWhiteList>().Where(c => c.AccountIds.Contains(accountId)).ToArray(); Assert.AreEqual(1, commands.Count()); Assert.AreEqual(30.62, commands[0].LastTriggeredAmount); }
private void OnCreditCardPaymentCaptured(CreditCardPaymentCaptured_V2 obj) { _isCaptured = true; if (obj.TransactionId.HasValue()) { _transactionId = obj.TransactionId; } }
public void Handle(CreditCardPaymentCaptured_V2 @event) { @event.MigrateFees(); if (@event.FeeType != FeeTypes.None) { return; } var activePromotions = _promotionDao.GetAllCurrentlyActive().ToArray(); UpdateRideProgression(activePromotions, PromotionTriggerTypes.AmountSpent, @event.AccountId, @event.OrderId, (double)@event.Meter); }
public void Handle(CreditCardPaymentCaptured_V2 @event) { @event.MigrateFees(); try { if (@event.IsForPrepaidOrder || @event.FeeType != FeeTypes.None) { // Don't message user for now return; } _notificationService.SendPaymentCapturePush(@event.OrderId, @event.Amount); } catch (Exception e) { Log.Debug(e); } }
public void Handle(CreditCardPaymentCaptured_V2 @event) { @event.MigrateFees(); using (var context = _contextFactory.Invoke()) { var orderReport = context.Find <OrderReportDetail>(@event.OrderId); if (@event.FeeType != FeeTypes.None) { orderReport.Payment.TotalAmountCharged += @event.Amount; } else { orderReport.Payment.MeterAmount = @event.Meter; orderReport.Payment.TipAmount = @event.Tip; orderReport.Payment.AuthorizationCode = @event.AuthorizationCode; orderReport.Payment.TransactionId = @event.TransactionId.ToSafeString().IsNullOrEmpty() ? string.Empty : "Auth: " + @event.TransactionId; orderReport.Payment.BookingFees = @event.BookingFees; } if (!orderReport.Payment.TotalAmountCharged.HasValue) { orderReport.Payment.TotalAmountCharged = 0; } orderReport.Payment.TotalAmountCharged += @event.Amount; orderReport.Payment.IsCompleted = true; orderReport.Payment.WasChargedNoShowFee = @event.FeeType == FeeTypes.NoShow; orderReport.Payment.WasChargedCancellationFee = @event.FeeType == FeeTypes.Cancellation; orderReport.Payment.WasChargedBookingFee = orderReport.Payment.BookingFees > 0; context.Save(orderReport); } }
public void Handle(CreditCardPaymentCaptured_V2 @event) { @event.MigrateFees(); using (var context = _contextFactory.Invoke()) { var payment = context.Set <OrderPaymentDetail>().Find(@event.SourceId); if (payment == null) { throw new InvalidOperationException("Payment not found"); } payment.TransactionId = @event.TransactionId; payment.AuthorizationCode = @event.AuthorizationCode; payment.IsCompleted = true; payment.Amount = @event.Amount; payment.Meter = @event.Meter; payment.Tax = @event.Tax; payment.Tip = @event.Tip; payment.Toll = @event.Toll; payment.Surcharge = @event.Surcharge; payment.BookingFees = @event.BookingFees; payment.IsCancelled = false; payment.FeeType = @event.FeeType; payment.Error = null; // Update payment details after settling an overdue payment if (@event.NewCardToken.HasValue()) { payment.CardToken = @event.NewCardToken; } var order = context.Find <OrderDetail>(payment.OrderId); // Prevents NullReferenceException caused with web prepayed while running database initializer. if (order == null && @event.IsForPrepaidOrder) { order = new OrderDetail { Id = payment.OrderId, //Following values will be set to the correct date and time when that event is played. PickupDate = @event.EventDate, CreatedDate = @event.EventDate }; context.Set <OrderDetail>().Add(order); } if (!order.Fare.HasValue || order.Fare == 0) { order.Fare = Convert.ToDouble(@event.Meter); } if (!order.Tip.HasValue || order.Tip == 0) { order.Tip = Convert.ToDouble(@event.Tip); } if (!order.Tax.HasValue || order.Tax == 0) { order.Tax = Convert.ToDouble(@event.Tax); } if (!order.Toll.HasValue || order.Toll == 0) { order.Toll = Convert.ToDouble(@event.Toll); } if (!order.Surcharge.HasValue || order.Surcharge == 0) { order.Surcharge = Convert.ToDouble(@event.Surcharge); } if ([email protected]) { var orderStatus = context.Find <OrderStatusDetail>(payment.OrderId); orderStatus.IBSStatusId = VehicleStatuses.Common.Done; orderStatus.IBSStatusDescription = _resources.Get("OrderStatus_wosDONE", order.ClientLanguageCode); } context.SaveChanges(); } }