// время, отображаемое на панели блюда private string getViewTimerString() { // для ИНГРЕДИЕНТОВ if ((this.ParentUID != null) && (this.ParentUID.Length > 0)) { // отключен флажок НЕЗАВИСИМОСТИ (IsIngredientsIndependent == false) и ВЫКЛЮЧЕН флажок показа таймера ShowTimerOnDependIngr bool b1 = (bool)WpfHelper.GetAppGlobalValue("IsIngredientsIndependent", false), b2 = (bool)WpfHelper.GetAppGlobalValue("ShowTimerOnDependIngr", false); bool isShowTimer = b1 || (!b1 && b2); if (isShowTimer == false) { return(null); } } // текущее значение таймера string timerString = this.WaitingTimerString; // состояние "Ожидание" начала готовки if (this.Status == OrderStatusEnum.WaitingCook) { // если есть "Готовить через" - отображаем время начала автомат.перехода в сост."В процессе" по убыванию if (this.DelayedStartTime != 0) { TimeSpan ts = _dtCookingStartEstimated - DateTime.Now; timerString = AppLib.GetAppStringTS(ts); if (ts.Ticks < 0) { if (this.EstimatedTime > 0) { timerString = _strCookingEstimated; } else { timerString = ""; } } } // если есть время приготовления, то отобразить время приготовления else if (this.EstimatedTime != 0) { timerString = _strCookingEstimated; } else { // по умолчанию отправить timerString = ""; } } // другие состояния else { TimeSpan tsTimerValue = AppLib.GetTSFromString(this.WaitingTimerString); // состояние "В процессе" - отображаем время приготовления по убыванию от планового времени приготовления, // если нет планового времени приготовления, то сразу отрицат.значения if (this.Status == OrderStatusEnum.Cooking) { tsTimerValue = _tsCookingEstimated - (tsTimerValue.Ticks < 0 ? tsTimerValue.Negate() : tsTimerValue); } else { // состояние "Готово/ПодтвГотово" - счетчик по убыванию от ExpectedTake (период, в течение которого официант должен забрать блюдо) if ((!_isUseReadyConfirmed && (this.Status == OrderStatusEnum.Ready)) || (_isUseReadyConfirmed && (this.Status == OrderStatusEnum.ReadyConfirmed))) { if (!_expTakeTS.IsZero()) { tsTimerValue = _expTakeTS - (tsTimerValue.Ticks < 0 ? tsTimerValue.Negate() : tsTimerValue); } } // есть ПодтвГотово, находимся в состоянии Готово и _autoGotoReadyConfirmPeriod не равен 0 - счетчик по убыванию от _autoGotoReadyConfirmPeriod (период, по истечении которого происходит автоматический переход в состояние ПодтвГотово) // && (_savedReadyTS.IsZero() == false) -- зачем? else if (_isUseReadyConfirmed && (!_autoGotoReadyConfirmTS.IsZero()) && (this.Status == OrderStatusEnum.Ready)) { tsTimerValue = _autoGotoReadyConfirmTS - (tsTimerValue - _savedReadyTS); _enableTimerToAutoReadyConfirm = (tsTimerValue.TotalSeconds > 0); } } timerString = AppLib.GetAppStringTS(tsTimerValue); } return(timerString); }
public void UpdateFromSvc(OrderDishModel svcOrderDish) { if (DishStatusId != svcOrderDish.DishStatusId) { DishStatusId = svcOrderDish.DishStatusId; // заходим в состояние Готово при включенном ПодтвГотово - запоминаем время готовки, чтобы потом вычислять таймер автомат.перехода в ПодтвГотово if ((_isUseReadyConfirmed == true) && (svcOrderDish.DishStatusId == 2)) { _savedReadyTS = AppLib.GetTSFromString(svcOrderDish.WaitingTimerString); } OnPropertyChanged("Status"); } if (UID != svcOrderDish.Uid) { UID = svcOrderDish.Uid; } if (ParentUID != svcOrderDish.ParentUid) { ParentUID = svcOrderDish.ParentUid; } if (DepartmentId != svcOrderDish.DepartmentId) { DepartmentId = svcOrderDish.DepartmentId; } if (DishName != svcOrderDish.Name) { DishName = svcOrderDish.Name; OnPropertyChanged("DishName"); } if (FilingNumber != svcOrderDish.FilingNumber) { FilingNumber = svcOrderDish.FilingNumber; OnPropertyChanged("FilingNumber"); } if (Quantity != svcOrderDish.Quantity) { Quantity = svcOrderDish.Quantity; OnPropertyChanged("Quantity"); } if (Comment != svcOrderDish.Comment) { Comment = svcOrderDish.Comment; OnPropertyChanged("Comment"); } if (CreateDate != svcOrderDish.CreateDate) { CreateDate = svcOrderDish.CreateDate; OnPropertyChanged("CreateDate"); } if (DelayedStartTime != svcOrderDish.DelayedStartTime) { DelayedStartTime = svcOrderDish.DelayedStartTime; OnPropertyChanged("DelayedStartTime"); } if (EstimatedTime != svcOrderDish.EstimatedTime) { EstimatedTime = svcOrderDish.EstimatedTime; OnPropertyChanged("EstimatedTime"); } if (ServiceErrorMessage != svcOrderDish.ServiceErrorMessage) { ServiceErrorMessage = svcOrderDish.ServiceErrorMessage; } setLocalDTFields(); if (WaitingTimerString != svcOrderDish.WaitingTimerString) { WaitingTimerString = svcOrderDish.WaitingTimerString; OnPropertyChanged("WaitingTimerString"); string viewTimer = getViewTimerString(); if (viewTimer != this.ViewTimerString) { this.ViewTimerString = viewTimer; OnPropertyChanged("ViewTimerString"); } } }