Exemple #1
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);
        }
Exemple #2
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);
        }