Пример #1
0
        private OrderDishRunTime newOrderDishRunTime(int dishId)
        {
            string sqlText = $"INSERT INTO [OrderDishRunTime] (OrderDishId) VALUES ({dishId}); SELECT @@IDENTITY";

            int newId = 0; string dbError = null;

            using (DBContext db = new DBContext())
            {
                var result = db.ExecuteScalar(sqlText);
                if (result != null)
                {
                    newId = Convert.ToInt32(result);
                }
                dbError = db.ErrMsg;
            }

            if ((newId == 0) || (dbError != null))
            {
                _serviceErrorMessage = dbError;
                return(null);
            }

            // вернуть запись с данным Id
            OrderDishRunTime retVal = getOrderDishRunTimeById(newId);

            return(retVal);
        }
Пример #2
0
        private string getSQLUpdStringRunTimeRecord(OrderDishRunTime runTimeRecord)
        {
            StringBuilder sb = new StringBuilder();

            sb.Append("UPDATE [OrderDishRunTime] SET ");
            sb.AppendFormat("[OrderDishId] = {0}", _dbRunTimeRecord.OrderDishId.ToString());
            sb.AppendFormat(", [InitDate] = {0}", _dbRunTimeRecord.InitDate.ToSQLExpr());
            sb.AppendFormat(", [WaitingCookTS] = {0}", _dbRunTimeRecord.WaitingCookTS.ToString());
            sb.AppendFormat(", [CookingStartDate] = {0}", _dbRunTimeRecord.CookingStartDate.ToSQLExpr());
            sb.AppendFormat(", [CookingTS] = {0}", _dbRunTimeRecord.CookingTS.ToString());
            sb.AppendFormat(", [ReadyDate] = {0}", _dbRunTimeRecord.ReadyDate.ToSQLExpr());
            sb.AppendFormat(", [WaitingTakeTS] = {0}", _dbRunTimeRecord.WaitingTakeTS.ToString());
            sb.AppendFormat(", [TakeDate] = {0}", _dbRunTimeRecord.TakeDate.ToSQLExpr());
            sb.AppendFormat(", [WaitingCommitTS] = {0}", _dbRunTimeRecord.WaitingCommitTS.ToString());
            sb.AppendFormat(", [CommitDate] = {0}", _dbRunTimeRecord.CommitDate.ToSQLExpr());
            sb.AppendFormat(", [CancelDate] = {0}", _dbRunTimeRecord.CancelDate.ToSQLExpr());
            sb.AppendFormat(", [CancelConfirmedDate] = {0}", _dbRunTimeRecord.CancelConfirmedDate.ToSQLExpr());
            sb.AppendFormat(", [ReadyTS] = {0}", _dbRunTimeRecord.ReadyTS.ToString());
            sb.AppendFormat(", [ReadyConfirmedDate] = {0}", _dbRunTimeRecord.ReadyConfirmedDate.ToSQLExpr());
            sb.AppendFormat(" WHERE ([Id]={0})", _dbRunTimeRecord.Id.ToString());
            string sqlText = sb.ToString();

            sb = null;

            return(sqlText);
        }
Пример #3
0
        private OrderDishRunTime getOrderDishRunTime(string sqlText)
        {
            DataTable dt      = null;
            string    dbError = null;

            using (DBContext db = new DBContext())
            {
                dt      = db.GetQueryTable(sqlText);
                dbError = db.ErrMsg;
            }
            if ((dt == null) || (dt.Rows.Count == 0))
            {
                return(null);
            }

            OrderDishRunTime retVal = new OrderDishRunTime();
            DataRow          dtRow  = dt.Rows[0];

            retVal.Id          = dtRow.ToInt("Id");
            retVal.OrderDishId = dtRow.ToInt("OrderDishId");

            retVal.InitDate      = dtRow.ToDateTime("InitDate");
            retVal.WaitingCookTS = dtRow.ToInt("WaitingCookTS");

            retVal.CookingStartDate = dtRow.ToDateTime("CookingStartDate");
            retVal.CookingTS        = dtRow.ToInt("CookingTS");

            retVal.ReadyDate     = dtRow.ToDateTime("ReadyDate");
            retVal.WaitingTakeTS = dtRow.ToInt("WaitingTakeTS");

            retVal.TakeDate        = dtRow.ToDateTime("TakeDate");
            retVal.WaitingCommitTS = dtRow.ToInt("WaitingCommitTS");

            retVal.CommitDate          = dtRow.ToDateTime("CommitDate");
            retVal.CancelDate          = dtRow.ToDateTime("CancelDate");
            retVal.CancelConfirmedDate = dtRow.ToDateTime("CancelConfirmedDate");

            retVal.ReadyTS            = dtRow.ToInt("ReadyTS");
            retVal.ReadyConfirmedDate = dtRow.ToDateTime("ReadyConfirmedDate");

            dt.Dispose();
            return(retVal);
        }
Пример #4
0
        private OrderDishRunTime getOrderDishRunTimeRecord(int dishId)
        {
            OrderDishRunTime runtimeRecord = null;

            runtimeRecord = getOrderDishRunTimeByOrderDishId(dishId);

            // если еще нет записи в БД, то добавить ее
            if (runtimeRecord == null)
            {
                runtimeRecord = newOrderDishRunTime(dishId);
                if (runtimeRecord == null)
                {
                    string _errMsg = string.Format("Ошибка создания записи в таблице OrderDishRunTime для блюда id {0}", dishId);
                    AppLib.WriteLogErrorMessage(_errMsg);
                    runtimeRecord = null;
                }
            }

            return(runtimeRecord);
        }
Пример #5
0
        // ctor
        // ДЛЯ НОВОГО БЛЮДА
        public OrderDishModel(OrderDish dbDish, OrderModel modelOrder)
        {
            _modelOrder = modelOrder;

            Id               = dbDish.Id; Uid = dbDish.UID;
            DepartmentId     = dbDish.DepartmentId;
            CreateDate       = dbDish.CreateDate;
            Name             = dbDish.DishName;
            FilingNumber     = dbDish.FilingNumber;
            ParentUid        = dbDish.ParentUid;
            Comment          = dbDish.Comment;
            Quantity         = dbDish.Quantity;
            DelayedStartTime = dbDish.DelayedStartTime;
            UID1C            = dbDish.UID1C;

            // свойства объекта с зависимыми полями

            EstimatedTime       = dbDish.EstimatedTime;
            _tsCookingEstimated = TimeSpan.FromSeconds(this.EstimatedTime);

            DishStatusId = dbDish.DishStatusId;
            Status       = AppLib.GetStatusEnumFromNullableInt(dbDish.DishStatusId);

            // получить запись из таблицы состояний
            _dbRunTimeRecord = getOrderDishRunTimeRecord(dbDish.Id);

            _isDish = ParentUid.IsNull();
            _isUseReadyConfirmed        = AppProperties.GetBoolProperty("UseReadyConfirmedState");
            _autoGotoReadyConfirmPeriod = AppProperties.GetIntProperty("AutoGotoReadyConfirmPeriod");

            // словарь дат входа в состояние
            _dtEnterStatusDict = new Dictionary <OrderStatusEnum, DateTime>();
            foreach (var item in Enum.GetValues(typeof(OrderStatusEnum)))
            {
                _dtEnterStatusDict.Add((OrderStatusEnum)item, DateTime.MinValue);
            }

            // создать словарь накопительных счетчиков
            _tsTimersDict = new Dictionary <OrderStatusEnum, TimeCounter>();
            // таймер ожидания начала приготовления
            _tsTimersDict.Add(OrderStatusEnum.WaitingCook, new TimeCounter()
            {
                Name = OrderStatusEnum.WaitingCook.ToString()
            });
            // таймер времени приготовления
            _tsTimersDict.Add(OrderStatusEnum.Cooking, new TimeCounter()
            {
                Name = OrderStatusEnum.Cooking.ToString()
            });
            // таймер времени ожидания выдачи, нахождение в состоянии Готов
            _tsTimersDict.Add(OrderStatusEnum.Ready, new TimeCounter()
            {
                Name = OrderStatusEnum.Ready.ToString()
            });
            if (_isUseReadyConfirmed)
            {
                _tsTimersDict.Add(OrderStatusEnum.ReadyConfirmed, new TimeCounter()
                {
                    Name = OrderStatusEnum.ReadyConfirmed.ToString()
                });
            }
            // таймер времени ожидания фиксации заказа, нахождение в состоянии Выдано
            _tsTimersDict.Add(OrderStatusEnum.Took, new TimeCounter()
            {
                Name = OrderStatusEnum.Took.ToString()
            });
            // таймер нахождения в состоянии отмены
            _tsTimersDict.Add(OrderStatusEnum.Cancelled, new TimeCounter()
            {
                Name = OrderStatusEnum.Cancelled.ToString()
            });


            // отмененное блюдо/ингредиент
            // для новой записи сразу сохраняем в БД
            if (Quantity < 0)
            {
                if (Status != OrderStatusEnum.Cancelled)
                {
                    UpdateStatus(OrderStatusEnum.Cancelled);
                }
                else
                {
                    startStatusTimerAtFirst();
                }
            }
            else
            {
                UpdateFromDBEntity(dbDish);  // для новой записи DTS не сохранен
                startStatusTimerAtFirst();
            }
        }  // constructor