Exemplo n.º 1
0
        public static IEnumerable <TicketItem> GetAllUnfired(YearId ticketPrimaryKey)
        {
            SqlConnection cn  = GetConnection();
            SqlCommand    cmd = null;

            try
            {
                cmd = new SqlCommand("SELECT * FROM TicketItem WHERE (" +
                                     "TicketItemYear=" + ticketPrimaryKey.Year + " AND " +
                                     "TicketItemTicketId=" + ticketPrimaryKey.Id + " AND " +
                                     "(TicketItemWhenCanceled IS NULL) AND " +
                                     "(TicketItemFireTime IS NULL))", cn);
                using (SqlDataReader rdr = cmd.ExecuteReader())
                {
                    while (rdr.Read())
                    {
                        TicketItem ticketItem = BuildTicketItem(rdr);
                        if (Item.GetIsFired(ticketItem.ItemId))
                        {
                            yield return(ticketItem);
                        }
                    }
                }
            }
            finally
            {
                if (cmd != null)
                {
                    cmd.Dispose();
                }
                FinishedWithConnection(cn);
            }
        }
Exemplo n.º 2
0
        private static bool Update(SqlConnection cn, TicketItem ticketItem)
        {
            Int32 rowsAffected;

            using (SqlCommand sqlCmd = cn.CreateCommand())
            {
                sqlCmd.CommandText = "UPDATE TicketItem SET TicketItemTicketId=@TicketItemTicketId,TicketItemItemId=@TicketItemItemId,TicketItemQuantity=@TicketItemQuantity,TicketItemPendingQuantity=@TicketItemPendingQuantity,TicketItemPrice=@TicketItemPrice,TicketItemOrderTime=@TicketItemOrderTime,TicketItemPreparedTime=@TicketItemPreparedTime,TicketItemWhenCanceled=@TicketItemWhenCanceled,TicketItemCancelingEmployeeId=@TicketItemCancelingEmployeeId,TicketItemCancelType=@TicketItemCancelType,TicketItemSpecialInstruction=@TicketItemSpecialInstruction,TicketItemIsWasted=@TicketItemIsWasted,TicketItemParentTicketItemId=@TicketItemParentTicketItemId,TicketItemFireTime=@TicketItemFireTime WHERE (TicketItemYear=@TicketItemYear AND TicketItemId=@TicketItemId)";

                BuildSqlParameter(sqlCmd, "@TicketItemYear", SqlDbType.SmallInt, ticketItem.PrimaryKey.Year);
                BuildSqlParameter(sqlCmd, "@TicketItemId", SqlDbType.Int, ticketItem.PrimaryKey.Id);
                BuildSqlParameter(sqlCmd, "@TicketItemTicketId", SqlDbType.Int, ticketItem.TicketId);
                BuildSqlParameter(sqlCmd, "@TicketItemItemId", SqlDbType.Int, ticketItem.ItemId);
                BuildSqlParameter(sqlCmd, "@TicketItemQuantity", SqlDbType.SmallInt, ticketItem.Quantity);
                BuildSqlParameter(sqlCmd, "@TicketItemPendingQuantity", SqlDbType.SmallInt, ticketItem.QuantityPending);
                BuildSqlParameter(sqlCmd, "@TicketItemPrice", SqlDbType.Float, ticketItem.Price);
                BuildSqlParameter(sqlCmd, "@TicketItemOrderTime", SqlDbType.DateTime, ticketItem.OrderTime);
                BuildSqlParameter(sqlCmd, "@TicketItemPreparedTime", SqlDbType.DateTime, ticketItem.PreparedTime);
                BuildSqlParameter(sqlCmd, "@TicketItemWhenCanceled", SqlDbType.DateTime, ticketItem.WhenCanceled);
                BuildSqlParameter(sqlCmd, "@TicketItemCancelingEmployeeId", SqlDbType.Int, ticketItem.CancelingEmployeeId);
                BuildSqlParameter(sqlCmd, "@TicketItemCancelType", SqlDbType.TinyInt, ticketItem.CancelType);
                BuildSqlParameter(sqlCmd, "@TicketItemSpecialInstruction", SqlDbType.Text, ticketItem.SpecialInstructions);
                BuildSqlParameter(sqlCmd, "@TicketItemIsWasted", SqlDbType.Bit, ticketItem.IsWasted);
                BuildSqlParameter(sqlCmd, "@TicketItemParentTicketItemId", SqlDbType.Int, ticketItem.ParentTicketItemId);
                BuildSqlParameter(sqlCmd, "@TicketItemFireTime", SqlDbType.DateTime, ticketItem.FireTime);

                rowsAffected = sqlCmd.ExecuteNonQuery();
            }
            return(rowsAffected != 0);
        }
Exemplo n.º 3
0
        /// <summary>
        /// Delete an entry from the TicketItem table
        /// </summary>
        private static bool Delete(YearId primaryKey, bool adjustInventory)
        {
            Int32      rowsAffected = 0;
            TicketItem ticketItem   = Get(primaryKey);

            if (ticketItem != null)
            {
                SqlConnection cn = GetConnection();
                using (SqlCommand sqlCmd = cn.CreateCommand())
                {
                    sqlCmd.CommandText = "DELETE FROM TicketItem WHERE (" +
                                         "TicketItemYear=" + primaryKey.Year + " AND " +
                                         "TicketItemId=" + primaryKey.Id + ")";
                    rowsAffected = sqlCmd.ExecuteNonQuery();
                }
                FinishedWithConnection(cn);

                // Increase the inventory of for the ticketitem
                if (adjustInventory)
                {
                    AdjustInventory(ticketItem, true);
                }
            }

            return(rowsAffected != 0);
        }
Exemplo n.º 4
0
        public static bool Delete(TicketItem ticketItem, int itemOptionId,
                                  bool adjustInventory)
        {
            Int32 rowsAffected = 0;


            // Cache old before making a change
            if (!ticketItem.IsTicketItemOptionsChanged)
            {
                TicketItem.CacheTicketItemOptions(ticketItem);
            }

            SqlConnection           cn = GetConnection();
            List <TicketItemOption> ticketItemOptions = new List <TicketItemOption>();

            if (adjustInventory)
            {
                using (SqlCommand sqlCmd = cn.CreateCommand())
                {
                    sqlCmd.CommandText =
                        "SELECT * FROM TicketItemOption WHERE (" +
                        "TicketItemOptionItemOptionId=" + itemOptionId + " AND " +
                        "TicketItemOptionYear=" + ticketItem.PrimaryKey.Year + " AND " +
                        "TicketItemOptionTicketItemId=" + ticketItem.PrimaryKey.Id + ")";
                    using (SqlDataReader rdr = sqlCmd.ExecuteReader())
                    {
                        while (rdr.Read())
                        {
                            ticketItemOptions.Add(BuildTicketItemOption(rdr));
                        }
                    }
                }
            }
            using (SqlCommand sqlCmd = cn.CreateCommand())
            {
                sqlCmd.CommandText =
                    "DELETE FROM TicketItemOption WHERE (" +
                    "TicketItemOptionItemOptionId=" + itemOptionId + " AND " +
                    "TicketItemOptionYear=" + ticketItem.PrimaryKey.Year + " AND " +
                    "TicketItemOptionTicketItemId=" + ticketItem.PrimaryKey.Id + ")";
                rowsAffected = sqlCmd.ExecuteNonQuery();
            }
            FinishedWithConnection(cn);

            if ((rowsAffected != 0) && (ticketItem.PrimaryKey.Id > 0))
            {
                SetTicketItemIsChanged(ticketItem);
            }

            // Increase the inventory
            if (adjustInventory)
            {
                foreach (TicketItemOption ticketItemOption in ticketItemOptions)
                {
                    AdjustInventory(ticketItemOption, ticketItem.Quantity, true);
                }
            }

            return(rowsAffected != 0);
        }
Exemplo n.º 5
0
 private static void SetTicketItemIsChanged(TicketItem ticketItem)
 {
     if (ticketItem != null)
     {
         ticketItem.SetTicketItemOptionsChanged();
     }
 }
Exemplo n.º 6
0
        /// <summary>
        /// Update an entry in the TicketItem table
        /// </summary>
        private static bool Update(TicketItem ticketItem)
        {
            SqlConnection cn     = GetConnection();
            bool          result = Update(cn, ticketItem);

            FinishedWithConnection(cn);
            return(result);
        }
Exemplo n.º 7
0
        /// <summary>
        /// Get an entry from the TicketItem table
        /// </summary>
        public static TicketItem Get(YearId primaryKey)
        {
            SqlConnection cn     = GetConnection();
            TicketItem    result = Get(cn, primaryKey);

            FinishedWithConnection(cn);
            return(result);
        }
Exemplo n.º 8
0
 private static void RestorePreviousTicketItemOptions(TicketItem ticketItem)
 {
     TicketItemOption.DeleteAll(ticketItem, true);
     foreach (TicketItemOption option in ticketItem._cachedItemOptions)
     {
         TicketItemOption.Add(option.TicketItemId, option.ItemOptionId,
                              option.Type, option.ChangeCount);
     }
 }
Exemplo n.º 9
0
        public static void CacheTicketItemOptions(TicketItem ticketItem)
        {
            IEnumerable <TicketItemOption> options = TicketItemOption.GetAll(ticketItem.PrimaryKey);

            ticketItem._cachedItemOptions.Clear();
            foreach (TicketItemOption option in options)
            {
                ticketItem._cachedItemOptions.Add(option);
            }
        }
Exemplo n.º 10
0
 public bool HasChangedTicketItem()
 {
     foreach (TicketItem ticketItem in TicketItem.GetAll(PrimaryKey))
     {
         if (ticketItem.IsChanged || ticketItem.OrderTime == null)
         {
             return(true);
         }
     }
     return(false);
 }
Exemplo n.º 11
0
        public void UnCancel()
        {
            // For each TicketItem, uncanel
            foreach (TicketItem item in TicketItem.GetAll(PrimaryKey))
            {
                if (item.CancelType.HasValue && (item.CancelType.Value == CancelType.TicketCancel))
                {
                    item.UnCancel();
                }
            }

            SetCloseTime(null);
            SetIsCanceled(false);
            Update();
        }
Exemplo n.º 12
0
        public void Cancel(int employeeId, bool wasteTicket)
        {
            // For each TicketItem, Cancel()
            foreach (TicketItem item in TicketItem.GetAll(PrimaryKey))
            {
                if (!item.CancelType.HasValue)
                {
                    item.Cancel(CancelType.TicketCancel, employeeId, wasteTicket);
                }
            }

            // Note: The actual ticket does not get deleted on a cancel
            SetCloseTime(DateTime.Now);
            SetIsCanceled(true);
            Update();
        }
Exemplo n.º 13
0
        public static TicketItemOption Add(int ticketItemId, int itemOptionId,
                                           TicketItemOptionType type, int changeCount)
        {
            TicketItemOption result = null;
            short            year   = DayOfOperation.CurrentYear;
            YearId           ticketItemPrimaryKey = new YearId(year, ticketItemId);

            changeCount = changeCount.Clamp(0, 255);

            // Cache old before making a change
            TicketItem ticketItem = TicketItem.Get(ticketItemPrimaryKey);

            if (!ticketItem.IsTicketItemOptionsChanged)
            {
                TicketItem.CacheTicketItemOptions(ticketItem);
            }

            SqlConnection cn = GetConnection();

            using (SqlCommand sqlCmd = new SqlCommand("AddTicketItemOption", cn))
            {
                sqlCmd.CommandType = CommandType.StoredProcedure;
                BuildSqlParameter(sqlCmd, "@TicketItemOptionItemOptionId", SqlDbType.Int, itemOptionId);
                BuildSqlParameter(sqlCmd, "@TicketItemOptionTicketItemId", SqlDbType.Int, ticketItemId);
                BuildSqlParameter(sqlCmd, "@TicketItemOptionType", SqlDbType.TinyInt, type);
                BuildSqlParameter(sqlCmd, "@TicketItemOptionChangeCount", SqlDbType.TinyInt, changeCount);
                BuildSqlParameter(sqlCmd, "@TicketItemOptionYear", SqlDbType.SmallInt, year);
                BuildSqlParameter(sqlCmd, "@TicketItemOptionId", SqlDbType.Int, ParameterDirection.ReturnValue);
                if (sqlCmd.ExecuteNonQuery() > 0)
                {
                    result = new TicketItemOption(new YearId(year, Convert.ToInt32(sqlCmd.Parameters["@TicketItemOptionId"].Value)),
                                                  itemOptionId, ticketItemId, type, changeCount);
                }
            }
            FinishedWithConnection(cn);

            if (result != null)
            {
                SetTicketItemIsChanged(ticketItem);
            }

            // Reduce the inventory
            TicketItemOption.AdjustInventory(result, ticketItem.Quantity, false);

            return(result);
        }
Exemplo n.º 14
0
        private static TicketItem Get(SqlConnection cn, YearId primaryKey)
        {
            TicketItem result = null;

            using (SqlCommand cmd = new SqlCommand("SELECT * FROM TicketItem WHERE (TicketItemYear=" +
                                                   primaryKey.Year + " AND TicketItemId=" + primaryKey.Id + ")", cn))
            {
                using (SqlDataReader rdr = cmd.ExecuteReader())
                {
                    if (rdr.Read())
                    {
                        result = BuildTicketItem(rdr);
                    }
                }
            }
            return(result);
        }
Exemplo n.º 15
0
        private static TicketItem CreateOrUpdate(YearId primaryKey,
                                                 int ticketId, int itemId, int quantity, int?pendingQuantity, double price,
                                                 DateTime?orderTime, DateTime?preparedTime, DateTime?whenCanceled,
                                                 int?cancelingEmployeeId, CancelType?cancelType, string specialInstructions,
                                                 bool isWasted, int?parentTicketItemId, DateTime?fireTime)
        {
            TicketItem result;

            if (Instances.Keys.Contains(primaryKey))
            {
                result = Instances[primaryKey];
                // If changes are present, the old information in the
                // database will erase the changes, so skip updating
                // instance variables.
                if (!result.IsChanged)
                {
                    result.TicketId            = ticketId;
                    result.ItemId              = itemId;
                    result.Quantity            = quantity;
                    result.Price               = price;
                    result.OrderTime           = orderTime;
                    result.PreparedTime        = preparedTime;
                    result.WhenCanceled        = whenCanceled;
                    result.CancelingEmployeeId = cancelingEmployeeId;
                    result.CancelType          = cancelType;
                    result.SpecialInstructions = specialInstructions;
                    result.QuantityPending     = pendingQuantity;
                    result.IsWasted            = isWasted;
                    result.ParentTicketItemId  = parentTicketItemId;
                    result.FireTime            = fireTime;
                }
            }
            else
            {
                result = new TicketItem(primaryKey, ticketId, itemId, quantity, pendingQuantity, price, orderTime,
                                        preparedTime, whenCanceled, cancelingEmployeeId, cancelType, specialInstructions,
                                        isWasted, parentTicketItemId, fireTime);
                Instances.Add(primaryKey, result);
            }
            return(result);
        }
Exemplo n.º 16
0
        public static void AdjustInventory(TicketItem ticketItem, bool increase,
                                           int?difference = null)
        {
            int quantity =
                (difference != null ? difference.Value :
                 (ticketItem.QuantityPending != null ? ticketItem.QuantityPending.Value :
                  ticketItem.Quantity));

            foreach (ItemIngredient itemIngredient in
                     ItemIngredient.GetAll(ticketItem.ItemId))
            {
                PosModelHelper.AdjustInventoryByIngredient(itemIngredient.IngredientId,
                                                           increase, itemIngredient.Amount * quantity,
                                                           itemIngredient.MeasurementUnit);
            }

            foreach (TicketItemOption ticketItemOption in
                     TicketItemOption.GetAll(ticketItem.PrimaryKey))
            {
                TicketItemOption.AdjustInventory(ticketItemOption, quantity,
                                                 increase);
            }
        }
Exemplo n.º 17
0
 public bool HasReturnPendingTicketItem()
 {
     return(TicketItem.GetAll(PrimaryKey).Any(ticketItem => ticketItem.IsPendingReturn));
 }