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); } }
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 }; }
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(); }); }
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; } } }