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); }
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); }
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); }
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); }
// 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