Exemple #1
0
        private void RefreshOrderStatus(IEnumerable <OrderStatusDetail> orderStatus)
        {
            try
            {
                Orders.Clear();

                var orderStatusDetails = orderStatus.ToArray();

                var hasAnOrderToCreate = _orderToCreate != null && _orderToCreate.Order != null;

                if (hasAnOrderToCreate && orderStatusDetails.Any(os => os.OrderId == _orderToCreate.Order.Id))
                {
                    _orderToCreate = null;
                }
                else if (hasAnOrderToCreate && orderStatusDetails.None(os => os.OrderId == _orderToCreate.Order.Id))
                {
                    Orders.Add(_orderToCreate.Order);
                }

                Orders.AddRange(orderStatusDetails.Select(status => new CallboxOrderViewModel(_bookingService)
                {
                    OrderStatus = status,
                    CreatedDate = status.PickupDate,
                    IbsOrderId  = status.IBSOrderId,
                    Id          = status.OrderId
                }));

                if (Orders.None() && !hasAnOrderToCreate)
                {
                    Close();

                    return;
                }

                if (Orders.Any(x => _bookingService.IsCallboxStatusCompleted(x.OrderStatus.IBSStatusId)) && NoMoreTaxiWaiting != null)
                {
                    NoMoreTaxiWaiting(this, new EventArgs());

                    return;
                }

                var completedOrders = Orders.Where(order =>
                                                   _bookingService.IsCallboxStatusCompleted(order.OrderStatus.IBSStatusId) &&
                                                   _orderNotified.All(orderId => orderId != order.Id));

                foreach (var order in completedOrders)
                {
                    _orderNotified.Add(order.Id);
                    if (OrderCompleted != null)
                    {
                        OrderCompleted(this, new EventArgs());
                    }
                }
            }
            catch (Exception e)
            {
                Logger.LogError(e);
            }
        }
Exemple #2
0
        public void Init(string passengerName)
        {
            Orders = new ObservableCollection <CallboxOrderViewModel>();

            var name = passengerName.HasValueTrimmed()
                        ? passengerName
                        : this.Services().Localize["NotSpecified"];

            _orderToCreate = new CreateOrderInfo {
                PassengerName = name, IsPendingCreation = true
            };
        }
Exemple #3
0
        private void RemoveOrderFromList(Guid orderId)
        {
            var orderToRemove = Orders.FirstOrDefault(o => o.Id.Equals(orderId));

            if (orderToRemove != null &&
                _orderToCreate != null &&
                _orderToCreate.Order != null &&
                orderToRemove.Id == _orderToCreate.Order.Id)
            {
                _orderToCreate = null;
            }

            InvokeOnMainThread(() =>
            {
                Orders.Remove(orderToRemove);

                if (Orders.Any())
                {
                    return;
                }

                Close();
            });
        }
Exemple #4
0
        private async Task CreateOrder(string passengerName)
        {
            using (this.Services().Message.ShowProgress())
            {
                if (_orderToCreate == null)
                {
                    _orderToCreate = new CreateOrderInfo {
                        PassengerName = passengerName, IsPendingCreation = true
                    };
                }

                try
                {
                    var pickupAddress = (await _accountService.GetFavoriteAddresses()).FirstOrDefault();

                    var newOrderCreated = new CreateOrderRequest
                    {
                        Id            = Guid.NewGuid(),
                        Settings      = _accountService.CurrentAccount.Settings,
                        PickupAddress = pickupAddress,
                        PickupDate    = DateTime.Now
                    };

                    if (!string.IsNullOrEmpty(passengerName))
                    {
                        newOrderCreated.Note          = string.Format(this.Services().Localize["Callbox.passengerName"], passengerName);
                        newOrderCreated.Settings.Name = passengerName;
                    }
                    else
                    {
                        newOrderCreated.Note          = this.Services().Localize["Callbox.noPassengerName"];
                        newOrderCreated.Settings.Name = this.Services().Localize["NotSpecified"];
                    }

                    var orderInfo = await _bookingService.CreateOrder(newOrderCreated);

                    await InvokeOnMainThreadAsync(() =>
                    {
                        if (pickupAddress == null)
                        {
                            this.Services().Message.ShowMessage(this.Services().Localize["ErrorCreatingOrderTitle"], this.Services().Localize["NoPickupAddress"]);

                            return;
                        }

                        if (orderInfo.IBSOrderId.GetValueOrDefault(0) == 0)
                        {
                            return;
                        }

                        orderInfo.Name = newOrderCreated.Settings.Name;

                        var orderViewModel = new CallboxOrderViewModel(_bookingService)
                        {
                            CreatedDate = DateTime.Now,
                            IbsOrderId  = orderInfo.IBSOrderId,
                            Id          = newOrderCreated.Id,
                            OrderStatus = orderInfo
                        };

                        if (_orderToCreate != null)
                        {
                            _orderToCreate.Order = orderViewModel;
                        }

                        Orders.Add(orderViewModel);
                    });
                }
                catch (Exception e)
                {
                    Logger.LogError(e);
                    InvokeOnMainThread(() =>
                    {
                        var err = string.Format(this.Services().Localize["ServiceError_ErrorCreatingOrderMessage"], Settings.TaxiHail.ApplicationName, Settings.DefaultPhoneNumberDisplay);
                        this.Services().Message.ShowMessage(this.Services().Localize["ErrorCreatingOrderTitle"], err);
                    });
                }
                finally
                {
                    _orderToCreate.IsPendingCreation = false;
                }
            }
        }