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); }
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); }