} // constructor internal int GetInstanceSize() { int retVal = 0; int szInt = sizeof(int), szDate = 8, szDecimal = 16; // Id, Uid, CreateDate, Name, FilingNumber, Quantity, ParentUid, Comment, // EstimatedTime, DelayedStartTime, DishStatusId, DepartmentId, // ServiceErrorMessage // WaitingTimerString - 14 retVal = szInt + (Uid.IsNull() ? 0 : Uid.Length) + szDate + (Name.IsNull() ? 0 : Name.Length) + szInt + szDecimal + (ParentUid.IsNull() ? 0 : ParentUid.Length) + (Comment.IsNull() ? 0 : Comment.Length) + szInt + szInt + szInt + szInt + (ServiceErrorMessage.IsNull() ? 0 : ServiceErrorMessage.Length) + (WaitingTimerString.IsNull() ? 0 : WaitingTimerString.Length); return(retVal); }
// 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