Example #1
0
 private TicketItemOption(YearId primaryKey, int itemOptionId, int ticketItemId,
                          TicketItemOptionType type, int changeCount)
 {
     PrimaryKey   = primaryKey;
     ItemOptionId = itemOptionId;
     TicketItemId = ticketItemId;
     Type         = type;
     ChangeCount  = changeCount;
 }
Example #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);
        }