private string getSQLUpdStringRunTimeRecord(OrderRunTime runTimeRecord) { System.Text.StringBuilder sb = new System.Text.StringBuilder(); sb.Append("UPDATE [OrderRunTime] SET "); sb.AppendFormat("[OrderId] = {0}", runTimeRecord.OrderId.ToString()); sb.AppendFormat(", [InitDate] = {0}", runTimeRecord.InitDate.ToSQLExpr()); sb.AppendFormat(", [WaitingCookTS] = {0}", runTimeRecord.WaitingCookTS.ToString()); sb.AppendFormat(", [CookingStartDate] = {0}", runTimeRecord.CookingStartDate.ToSQLExpr()); sb.AppendFormat(", [CookingTS] = {0}", runTimeRecord.CookingTS.ToString()); sb.AppendFormat(", [ReadyDate] = {0}", runTimeRecord.ReadyDate.ToSQLExpr()); sb.AppendFormat(", [WaitingTakeTS] = {0}", runTimeRecord.WaitingTakeTS.ToString()); sb.AppendFormat(", [TakeDate] = {0}", runTimeRecord.TakeDate.ToSQLExpr()); sb.AppendFormat(", [WaitingCommitTS] = {0}", runTimeRecord.WaitingCommitTS.ToString()); sb.AppendFormat(", [CommitDate] = {0}", runTimeRecord.CommitDate.ToSQLExpr()); sb.AppendFormat(", [CancelDate] = {0}", runTimeRecord.CancelDate.ToSQLExpr()); sb.AppendFormat(", [CancelConfirmedDate] = {0}", runTimeRecord.CancelConfirmedDate.ToSQLExpr()); sb.AppendFormat(", [ReadyTS] = {0}", runTimeRecord.ReadyTS.ToString()); sb.AppendFormat(", [ReadyConfirmedDate] = {0}", runTimeRecord.ReadyConfirmedDate.ToSQLExpr()); sb.AppendFormat(" WHERE ([Id]={0})", runTimeRecord.Id.ToString()); string sqlText = sb.ToString(); sb = null; return(sqlText); }
private OrderRunTime newOrderRunTime(int orderId) { string sqlText = $"INSERT INTO [OrderRunTime] (OrderId) VALUES ({orderId}); 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 OrderRunTime retVal = getOrderRunTimeById(newId); return(retVal); }
private OrderRunTime getOrderRunTime(string sqlText) { DataTable dt = null; using (DBContext db = new DBContext()) { dt = db.GetQueryTable(sqlText); } if ((dt == null) || (dt.Rows.Count == 0)) { return(null); } OrderRunTime retVal = new OrderRunTime(); DataRow dtRow = dt.Rows[0]; retVal.Id = dtRow.ToInt("Id"); retVal.OrderId = dtRow.ToInt("OrderId"); 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 OrderRunTime getOrderRunTimeRecord(int orderId) { OrderRunTime runtimeRecord = null; runtimeRecord = getOrderRunTimeByOrderId(orderId); // если еще нет записи в БД, то добавить ее if (runtimeRecord == null) { runtimeRecord = newOrderRunTime(orderId); if (runtimeRecord == null) { string _errMsg = string.Format("Ошибка создания записи в таблице OrderRunTime для заказа id {0}", orderId); _serviceErrorMessage = _errMsg; AppLib.WriteLogErrorMessage(_errMsg); runtimeRecord = null; } } return(runtimeRecord); }
// *** CONSTRUCTOR *** public OrderModel(Order dbOrder) { Id = dbOrder.Id; Uid = dbOrder.UID; Number = dbOrder.Number; TableName = dbOrder.TableNumber; CreateDate = dbOrder.CreateDate; HallName = dbOrder.RoomNumber; Waiter = dbOrder.Waiter; DivisionColorRGB = dbOrder.DivisionColorRGB; OrderStatusId = dbOrder.OrderStatusId; Status = (OrderStatusEnum)dbOrder.OrderStatusId; //AppLib.GetStatusEnumFromNullableInt(dbOrder.OrderStatusId); _isUseReadyConfirmed = AppProperties.GetBoolProperty("UseReadyConfirmedState"); _dishesDict = new Dictionary <int, OrderDishModel>(); // получить отсоединенную RunTime запись из таблицы состояний _dbRunTimeRecord = getOrderRunTimeRecord(dbOrder.Id); // создать словарь накопительных счетчиков _tsTimersDict = new Dictionary <OrderStatusEnum, TimeCounter>(); // таймер времени приготовления _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 (this.OrderStatusId < 1) { OrderStatusEnum newStatus = OrderStatusEnum.Cooking; UpdateStatus(newStatus, false); } else { // обновить статус заказа по статусам всех блюд OrderStatusEnum eStatusAllDishes = AppLib.GetStatusAllDishes(dbOrder.Dishes); if ((eStatusAllDishes != OrderStatusEnum.None) && (this.Status != eStatusAllDishes) && ((int)this.Status < (int)eStatusAllDishes)) { UpdateStatus(eStatusAllDishes, false); } } StatusDTS statusDTS = getStatusRunTimeDTS(this.Status); DateTime dtEnterState = statusDTS.DateEntered; if (dtEnterState.IsZero()) { dtEnterState = DateTime.Now; setStatusRunTimeDTS(this.Status, dtEnterState, -1); saveRunTimeRecord(); statusDTS = getStatusRunTimeDTS(this.Status); } startStatusTimer(statusDTS); // добавить блюда к заказу // расставить сначала блюдо, потом его ингредиенты, т.к. ингр.могут идти ПЕРЕД блюдом List <OrderDish> dishParentList = dbOrder.Dishes.Where(d => d.ParentUid.IsNull()).ToList(); Dictionary <int, OrderDish> dAll = new Dictionary <int, OrderDish>(); foreach (OrderDish dishParent in dishParentList) { if (dAll.ContainsKey(dishParent.Id) == false) { dAll.Add(dishParent.Id, dishParent); // отобрать ингредиенты List <OrderDish> ingrList = dbOrder.Dishes.Where(ingr => (ingr.ParentUid == dishParent.UID) && (ingr.Id != dishParent.Id)).ToList(); foreach (OrderDish ingr in ingrList) { if (dAll.ContainsKey(ingr.Id) == false) { dAll.Add(ingr.Id, ingr); } } } } foreach (OrderDish dbDish in dAll.Values) // dbOrder.OrderDish { if (this._dishesDict.ContainsKey(dbDish.Id) == false) { OrderDishModel newDish = new OrderDishModel(dbDish, this); this._dishesDict.Add(newDish.Id, newDish); } } } // ctor