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);
        }
Esempio n. 2
0
        private void OnCreditCardPaymentCaptured(CreditCardPaymentCaptured_V2 obj)
        {
            _isCaptured = true;

            if (obj.TransactionId.HasValue())
            {
                _transactionId = obj.TransactionId;
            }
        }
Esempio n. 3
0
        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);
        }
Esempio n. 4
0
        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);
            }
        }
Esempio n. 6
0
        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();
            }
        }