/// <summary> /// Откритытие окна согласования заказа /// </summary> private void OpenDialogForOrderAgreement(RecivedOrder currentOrder) { this._sendOrder = new RecivedOrder(currentOrder.CustomerName, currentOrder.Time, currentOrder.Order, null); if (this.RecivedStackOrders.Value.FirstOrDefault(o => o.Order.ID == _sendOrder.Order.ID) != null) { this.RecivedStackOrders.Value.RemoveAll(o => o.Order.ID == _sendOrder.Order.ID); UpdateStackOrderList(); } currentOrder.IsAlive = true; this.RecivedOrderTime.Value = TimeSpan.Parse(currentOrder.Time); this.RecivedOrderNumber.Value = currentOrder.Order.RowNumber; currentOrder.Order.OrderedFood = currentOrder.Order.OrderedFood.OrderBy(f => f.ProductInfo.Name).ToList(); var indexFood = 0; foreach (var item in currentOrder.Order.OrderedFood) { indexFood++; item.index = indexFood; } //indexFood = 0; this.ListCurentOrderProductItem.Value = currentOrder.Order.OrderedFood; IsOrderDialogOpen.Value = true; }
/// <summary> /// Событие для открытия следующего заказа /// </summary> private void HomeViewModel_OpenNexStackOrder(object sender, RecivedOrder deleteOrder) { this.ClearOrder(deleteOrder); //IsDelayFive.Value = false; if (!this._recivedStackOrders.IsNullOrEmpty()) { var curerntOrder = this._recivedStackOrders.FirstOrDefault(); this.OpenDialogForOrderAgreement(curerntOrder); } }
/// <summary> /// Очистка обработаного заказа после отправке пользовтелю /// </summary> private void ClearOrder(RecivedOrder deleteOrder) { if (deleteOrder != null) { this._recivedStackOrders.Find(o => o.Order.ID == deleteOrder.Order.ID).CloseOrderTimer.StopTimer(); this._recivedStackOrders.RemoveAll(o => o.Order.ID == deleteOrder.Order.ID); } this.ListCurentOrderProductItem.Value = new List <ProductForOrder>(); IsOrderDialogOpen.Value = false; this._sendOrder = new RecivedOrder(); }
private async void InitSignalRForAgreement() { var user = await this._loginService.GetProfile(); if (user != null) { this._orderController.HubConnection(user.ID); this._orderController.OnReceiveOrder(async(customer, reciveOrder, time) => { var deserializeOrder = JsonConvert.DeserializeObject <OrderItem>(reciveOrder); _dialogService.Notification(new NotificaiosModel($"Пришел на обработку заказ №{deserializeOrder.RowNumber}" , $"Необходимо приготовить его за {TimeSpan.Parse(time).Minutes} минут") ); var stackOrder = new RecivedOrder(customer.ToString(), time, deserializeOrder, (order) => { order.CloseOrderTimer = new Timer(new TimeSpan(0, 0, 75), (_) => { order.CloseOrderTimer.WaitTime.Value -= new TimeSpan(0, 0, 1); // UpdateStackOrderList(); if (order.IsAlive) { this.RecivedOrderTimer.Value = order.CloseOrderTimer.WaitTime.Value; } if (order.CloseOrderTimer.WaitTime.Value >= TimeSpan.Zero) { return; } order.CloseOrderTimer.StopTimer(); this._recivedStackOrders.RemoveAll(o => o.Order.ID == order.Order.ID); if (this.IsOrderDialogOpen.Value) { this.OpenNexStackOrder.Invoke(null, null); } }); }); stackOrder.StartTimer(); this._recivedStackOrders.Add(stackOrder); if (this._recivedStackOrders.Count > 1) { this.RecivedStackOrders.Value.Add(stackOrder); UpdateStackOrderList(); } if (this._recivedStackOrders.Count == 1) { this.OpenDialogForOrderAgreement(stackOrder); } this.CurentPayedOrders.Value = await _sellerOrderService.GetOrders(); }); } }