public TicketItem AddItemToOrder(Item item) { double itemPrice = item.Price; // TODO: VIP! Check for special pricing foreach (ItemPricing price in ItemPricing.GetAll(item.Id, true, true)) { itemPrice = price.Price; } TicketItem ticketItem = TicketItem.Add(SessionManager.ActiveTicket.PrimaryKey, item.Id, 1, itemPrice, null, null); if (item.IsGrouping) { var itemGroups = new List <ItemGroup>(ItemGroup.GetAll(item.Id)); var ticketItems = new Stack <TicketItem>(); foreach (TicketItem childTicketItem in itemGroups .Select(itemGroup => TicketItem.Add(SessionManager.ActiveTicket.PrimaryKey, itemGroup.TargetItemId, 1, 0, null, null, ticketItem.PrimaryKey.Id))) { ticketItems.Push(childTicketItem); } AddItemToOrder(ticketItems.Pop(), BranchType.Last); foreach (TicketItem childTicketItem in ticketItems) { AddItemToOrder(childTicketItem, BranchType.Middle); } } return(AddItemToOrder(ticketItem)); }
private void InitializeListBoxes() { listBoxAvailableItems.SelectedItem = null; listBoxIncludedItems.SelectedItem = null; listBoxAvailableItems.Items.Clear(); listBoxIncludedItems.Items.Clear(); List <Item> items = ItemMaintenanceControl.ItemCache; if (_activeItem != null) { // Remove current item items.Remove(Item.FindById(items, _activeItem.Id)); foreach (ItemGroup itemGroup in ItemGroup.GetAll(_activeItem.Id)) { bool added, changed, removed; ItemGroup current = GetItemGroup(itemGroup.Id, out added, out changed, out removed); if (removed) { continue; } Item item = Item.FindById(items, itemGroup.TargetItemId); AddItemGroupToListBox( (changed ? current : itemGroup), item); } } // Note: Added ones have an ItemId of zero so GetAll (above) will not find them foreach (ItemGroup itemGroup in _itemGroupsAdded) { Item item = Item.FindById(items, itemGroup.TargetItemId); AddItemGroupToListBox(itemGroup, item); } foreach (Item item in items) { if (ItemGroup.IsGroupMember(item.Id)) { continue; } listBoxAvailableItems.Items.Add( new FormattedListBoxItem(item, item.FullName, true)); } SetButtonsEnabled(); }