public void Handle(OrderManuallyPairedForRideLinq @event)
        {
            using (var context = _contextFactory.Invoke())
            {
                var orderReport = new OrderReportDetail {
                    Id = @event.SourceId
                };

                var account = context.Find <AccountDetail>(@event.AccountId);

                orderReport.Account = new OrderReportAccount
                {
                    AccountId        = @event.AccountId,
                    Name             = account.Name,
                    Phone            = account.Settings.Phone,
                    Email            = account.Email,
                    DefaultCardToken = account.DefaultCreditCard,
                    PayBack          = account.Settings.PayBack
                };

                orderReport.Order = new OrderReportOrder
                {
                    ChargeType           = ChargeTypes.CardOnFile.Id.ToString(),
                    PickupDateTime       = @event.PairingDate,
                    CreateDateTime       = @event.PairingDate,
                    PickupAddress        = @event.PickupAddress,
                    OriginatingIpAddress = @event.OriginatingIpAddress,
                    KountSessionId       = @event.KountSessionId
                };
                orderReport.Client = new OrderReportClient
                {
                    OperatingSystem = @event.UserAgent.GetOperatingSystem(),
                    UserAgent       = @event.UserAgent,
                    Version         = @event.ClientVersion
                };

                orderReport.Payment = new OrderReportPayment
                {
                    PairingToken = @event.PairingToken,
                    IsPaired     = true
                };

                orderReport.OrderStatus = new OrderReportOrderStatus
                {
                    Status = OrderStatus.Created
                };

                context.Save(orderReport);
            }
        }
Пример #2
0
        public void Setup()
        {
            _orderId = Guid.NewGuid();

            var @event = new OrderManuallyPairedForRideLinq
            {
                EventDate = _eventDate,

                SourceId      = _orderId,
                AccountId     = Guid.NewGuid(),
                TripId        = 15,
                PairingDate   = DateTime.Now,
                PickupAddress = new Address
                {
                    Apartment = "3939",
                    Street    = "1234 rue Saint-Hubert",
                    RingCode  = "3131",
                    Latitude  = 45.515065,
                    Longitude = -73.558064
                },
                UserAgent            = "useragent",
                ClientLanguageCode   = "en",
                ClientVersion        = "1.0",
                OriginatingIpAddress = "192.168.12.30",
                KountSessionId       = "1i3u13n123",

                Medallion = "1251515",
                DriverId  = 124135356,

                PairingCode  = "515152",
                PairingToken = "62523",
                CreditCardId = Guid.NewGuid()
            };

            Sut.Handle(@event);
        }
Пример #3
0
        public void Handle(OrderManuallyPairedForRideLinq @event)
        {
            using (var context = _contextFactory.Invoke())
            {
                var orderDetail = new OrderDetail
                {
                    AccountId            = @event.AccountId,
                    Id                   = @event.SourceId,
                    IBSOrderId           = @event.TripId,
                    PickupDate           = @event.PairingDate,
                    CreatedDate          = @event.PairingDate,
                    PickupAddress        = @event.PickupAddress,
                    Status               = (int)OrderStatus.Created,
                    UserAgent            = @event.UserAgent,
                    ClientLanguageCode   = @event.ClientLanguageCode,
                    ClientVersion        = @event.ClientVersion,
                    IsManualRideLinq     = true,
                    OriginatingIpAddress = @event.OriginatingIpAddress,
                    KountSessionId       = @event.KountSessionId,
                };


                if (@event.CreditCardId.HasValue)
                {
                    orderDetail.PaymentInformation = new PaymentInformationDetails()
                    {
                        CreditCardId      = @event.CreditCardId,
                        PayWithCreditCard = true
                    };

                    orderDetail.Settings = new BookingSettings()
                    {
                        ChargeType   = ChargeTypes.CardOnFile.Display,
                        ChargeTypeId = ChargeTypes.CardOnFile.Id
                    };
                }

                context.Save(orderDetail);

                // Create an empty OrderStatusDetail row
                var details = context.Find <OrderStatusDetail>(@event.SourceId);
                if (details != null)
                {
                    _logger.LogMessage("Order Status already existing for Order : " + @event.SourceId);
                }
                else
                {
                    context.Save(new OrderStatusDetail
                    {
                        OrderId              = @event.SourceId,
                        AccountId            = @event.AccountId,
                        Status               = OrderStatus.Created,
                        IBSStatusDescription = _resources.Get("CreateOrder_WaitingForIbs", @event.ClientLanguageCode),
                        PickupDate           = @event.PairingDate,
                        IsManualRideLinq     = true,
                        VehicleNumber        = @event.Medallion,
                        DriverInfos          = new DriverInfos
                        {
                            DriverId = @event.DriverId.ToString()
                        }
                    });
                }

                var rideLinqDetails = context.Find <OrderManualRideLinqDetail>(@event.SourceId);
                if (rideLinqDetails != null)
                {
                    _logger.LogMessage("RideLinqDetails already existing for Order : " + @event.SourceId);
                }
                else
                {
                    context.Save(new OrderManualRideLinqDetail
                    {
                        OrderId             = @event.SourceId,
                        AccountId           = @event.AccountId,
                        PairingCode         = @event.PairingCode,
                        PairingToken        = @event.PairingToken,
                        PairingDate         = @event.PairingDate,
                        Distance            = @event.Distance,
                        Extra               = @event.Extra,
                        Fare                = @event.Fare,
                        FareAtAlternateRate = @event.FareAtAlternateRate,
                        Total               = @event.Total,
                        Toll                = @event.Toll,
                        Tax             = @event.Tax,
                        Tip             = @event.Tip,
                        Surcharge       = @event.Surcharge,
                        RateAtTripStart = @event.RateAtTripStart,
                        RateAtTripEnd   = @event.RateAtTripEnd,
                        RateChangeTime  = @event.RateChangeTime,
                        Medallion       = @event.Medallion,
                        DeviceName      = @event.DeviceName,
                        TripId          = @event.TripId,
                        DriverId        = @event.DriverId,
                        LastFour        = @event.LastFour,
                        AccessFee       = @event.AccessFee
                    });
                }
            }
        }
Пример #4
0
        public void when_order_paired_then_order_dto_populated()
        {
            var @event = new OrderManuallyPairedForRideLinq
            {
                SourceId      = Guid.NewGuid(),
                AccountId     = Guid.NewGuid(),
                TripId        = 15,
                PairingDate   = DateTime.Now,
                PickupAddress = new Address
                {
                    Apartment = "3939",
                    Street    = "1234 rue Saint-Hubert",
                    RingCode  = "3131",
                    Latitude  = 45.515065,
                    Longitude = -73.558064
                },
                UserAgent            = "useragent",
                ClientLanguageCode   = "en",
                ClientVersion        = "1.0",
                OriginatingIpAddress = "192.168.12.30",
                KountSessionId       = "1i3u13n123",

                Medallion = "1251515",
                DriverId  = 124135356,

                PairingCode  = "515152",
                PairingToken = "62523",

                CreditCardId = Guid.NewGuid()
            };

            Sut.Handle(@event);

            using (var context = new BookingDbContext(DbName))
            {
                var order = context.Query <OrderDetail>().SingleOrDefault(x => x.Id == @event.SourceId);
                Assert.IsNotNull(order);
                Assert.AreEqual(@event.AccountId, order.AccountId);
                Assert.AreEqual(@event.TripId, order.IBSOrderId);
                Assert.AreEqual(@event.PairingDate.ToLongDateString(), order.CreatedDate.ToLongDateString());
                Assert.AreEqual(@event.PickupAddress.DisplayLine1, order.PickupAddress.DisplayLine1);
                Assert.AreEqual((int)OrderStatus.Created, order.Status);
                Assert.AreEqual(@event.UserAgent, order.UserAgent);
                Assert.AreEqual(@event.ClientLanguageCode, order.ClientLanguageCode);
                Assert.AreEqual(@event.ClientVersion, order.ClientVersion);
                Assert.AreEqual(true, order.IsManualRideLinq);
                Assert.AreEqual(@event.OriginatingIpAddress, order.OriginatingIpAddress);
                Assert.AreEqual(@event.KountSessionId, order.KountSessionId);

                Assert.IsTrue(order.PaymentInformation.PayWithCreditCard);
                Assert.AreEqual(ChargeTypes.CardOnFile.Id, order.Settings.ChargeTypeId);
                Assert.AreEqual(@event.CreditCardId, order.PaymentInformation.CreditCardId);

                var orderStatus = context.Query <OrderStatusDetail>().SingleOrDefault(x => x.OrderId == @event.SourceId);
                Assert.IsNotNull(orderStatus);
                Assert.AreEqual(@event.AccountId, orderStatus.AccountId);
                Assert.AreEqual(OrderStatus.Created, orderStatus.Status);
                Assert.AreEqual("Processing your order...", orderStatus.IBSStatusDescription);
                Assert.AreEqual(@event.Medallion, orderStatus.VehicleNumber);
                Assert.AreEqual(@event.DriverId.ToString(), orderStatus.DriverInfos.DriverId);

                var orderRideLinq = context.Query <OrderManualRideLinqDetail>().SingleOrDefault(x => x.OrderId == @event.SourceId);
                Assert.IsNotNull(orderRideLinq);
                Assert.AreEqual(@event.AccountId, orderRideLinq.AccountId);
                Assert.AreEqual(@event.PairingCode, orderRideLinq.PairingCode);
                Assert.AreEqual(@event.PairingToken, orderRideLinq.PairingToken);
                Assert.AreEqual(@event.PairingDate.ToLongDateString(), orderRideLinq.PairingDate.ToLongDateString());
                Assert.AreEqual(@event.Distance, orderRideLinq.Distance);
                Assert.AreEqual(@event.Extra, orderRideLinq.Extra);
                Assert.AreEqual(@event.Fare, orderRideLinq.Fare);
                Assert.AreEqual(@event.FareAtAlternateRate, orderRideLinq.FareAtAlternateRate);
                Assert.AreEqual(@event.Total, orderRideLinq.Total);
                Assert.AreEqual(@event.Toll, orderRideLinq.Toll);
                Assert.AreEqual(@event.Tax, orderRideLinq.Tax);
                Assert.AreEqual(@event.Tip, orderRideLinq.Tip);
                Assert.AreEqual(@event.Surcharge, orderRideLinq.Surcharge);
                Assert.AreEqual(@event.RateAtTripStart, orderRideLinq.RateAtTripStart);
                Assert.AreEqual(@event.RateAtTripEnd, orderRideLinq.RateAtTripEnd);
                Assert.AreEqual(@event.RateChangeTime, orderRideLinq.RateChangeTime);
                Assert.AreEqual(@event.Medallion, orderRideLinq.Medallion);
                Assert.AreEqual(@event.DeviceName, orderRideLinq.DeviceName);
                Assert.AreEqual(@event.TripId, orderRideLinq.TripId);
                Assert.AreEqual(@event.DriverId, orderRideLinq.DriverId);
                Assert.AreEqual(@event.LastFour, orderRideLinq.LastFour);
                Assert.AreEqual(@event.AccessFee, orderRideLinq.AccessFee);
            }
        }
Пример #5
0
 private void OnOrderManuallyPairedForRideLinq(OrderManuallyPairedForRideLinq @event)
 {
     _status = OrderStatus.Created;
 }