private void _UpdateOrderList(RequestNS.RequestOrderStatus orderStatus) { try { lock (this._LockCurrentOrders) { DTO.Order editOrder = this._CurrentOrders.FirstOrDefault(x => x.OrderId == orderStatus.OrderId); if (editOrder == null) { editOrder = new DTO.Order(); editOrder.OrderId = orderStatus.OrderId; this._CurrentOrders.Add(editOrder); } DTO.Order updatedOrder = orderStatus.GetOrder(); editOrder.DrinkId = updatedOrder.DrinkId; editOrder.ExpectedSecondsToDeliver = updatedOrder.ExpectedSecondsToDeliver; editOrder.OrderStatus = updatedOrder.OrderStatus; editOrder.OrderStateId = updatedOrder.OrderStateId; this._CleanupCompletedOrders(); this._NotifyOrderChanged((DTO.Order)editOrder.Clone()); } } catch (InvalidOperationException) { } catch (ArgumentNullException) { } }
void orderUpdaterequest_OnRequestCompleted(object sender, RequestNS.RequestCompletedEventArgs e) { RequestNS.RequestOrderStatus orderStatus = e.Request as RequestNS.RequestOrderStatus; if (e.Request.State != RequestNS.RequestStates.Successful) { this._HandleFailedOrderRequest(orderStatus); } else { this._UpdateOrderList(orderStatus); } }
private void _HandleFailedOrderRequest(RequestNS.RequestOrderStatus failedRequest) { DTO.Order failedOrder = null; lock (this._LockCurrentOrders) { failedOrder = this._CurrentOrders.FirstOrDefault(x => x.OrderId == failedRequest.OrderId); if (failedOrder != null) { this._CurrentOrders.Remove(failedOrder); } } failedOrder.OrderStateId = DTO.StateId.Failed; this._NotifyOrderChanged(failedOrder); return; }