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); } }
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); }
/// <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); }
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); }
private static void SetTicketItemIsChanged(TicketItem ticketItem) { if (ticketItem != null) { ticketItem.SetTicketItemOptionsChanged(); } }
/// <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); }
/// <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); }
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); } }
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); } }
public bool HasChangedTicketItem() { foreach (TicketItem ticketItem in TicketItem.GetAll(PrimaryKey)) { if (ticketItem.IsChanged || ticketItem.OrderTime == null) { return(true); } } return(false); }
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(); }
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(); }
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); }
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); }
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); }
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); } }
public bool HasReturnPendingTicketItem() { return(TicketItem.GetAll(PrimaryKey).Any(ticketItem => ticketItem.IsPendingReturn)); }