Ejemplo n.º 1
0
        // время, отображаемое на панели блюда
        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);
        }
Ejemplo n.º 2
0
        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");
                }
            }
        }