public void Load(bool isDeliveryOrder)
        {
            _isDeliveryOrder = isDeliveryOrder;

            // CartItem -> Product -> DealItem
            Product = new BxDealItem(_dealId);
            if (_dealId > 0)
            {
                Product.Load(_isDeliveryOrder);
            }

            // CartItem -> Product -> DealItem -> (*) MenuItem
            if (_menuItemId > 0)
            {
                var item = new BxMenuItem(_menuItemId) {};

                item.Load(_isDeliveryOrder);
                //item.Name = "asd";
                if (!string.IsNullOrWhiteSpace(item.Name) && !Product.Contains(item))
                {
                    Product.Items.Add(item);
                }
            }

            // CartItem -> Product -> DealItem -> (*) MenuItem -> (*) SubMenuItem
            if (_subMenuItemId != 0)
            {
                var subItem = new SubMenuItem(_menuItemId, _subMenuItemId);
                subItem.Load(_isDeliveryOrder);
                if (!string.IsNullOrWhiteSpace(subItem.Name) && !Product.GetMenuItem(_menuItemId).Contains(subItem))
                {
                    Product.GetMenuItem(_menuItemId).Items.Add(subItem);
                    if ((subItem.UnitPrice > 0))
                    {
                        Product.GetMenuItem(_menuItemId).UnitPrice = subItem.UnitPrice;
                    }
                }
            }

            // Is this add dressing?
            // CartItem -> Product -> DealItem -> (*) MenuItem -> (*) Dressing
            if (_dressingId != 0)
            {
                var dressing = new MenuDressing(_menuItemId, _dressingId);
                dressing.Load(_isDeliveryOrder);
                if (!Product.GetMenuItem(_menuItemId).Contains(dressing))
                {
                    Product.Items.Add(dressing);
                }

            }

            // Is this adding topping?
            // CartItem -> Product -> DealItem -> (*) MenuItem -> (*) Topping
            if (_toppingId != 0)
            {
                var isExcluding = _toppingId < 0;

                var topping = new MenuTopping(_menuItemId, _subMenuItemId, Math.Abs(_toppingId));
                topping.Load(_isDeliveryOrder);

                if (!string.IsNullOrWhiteSpace(topping.Name) && !Product.GetMenuItem(_menuItemId).Contains(topping))
                {
                    if (isExcluding)
                    {
                        topping.Name = "NOT " + topping.Name;
                    }

                    Product.Items.Add(topping);
                }
            }
        }
        private void AddToppingOnMenuItemWithPosition(int menuId, int subMenuId, int toppingId, string toppingPos, ref BxCartItem item)
        {
            if (item == null)
                return;

            BxDealItem dealItem = item.Product;
            if (dealItem == null)
                return;

            BxMenuItem menuItemToAddToppingOn = null;
            for (int index = 0; index < dealItem.Items.Count; index++)
            {
                BxMenuItem mnuItem = dealItem.Items[index] as BxMenuItem;
                if (mnuItem == null)
                    continue;

                if (mnuItem.ID == menuId)
                {
                    menuItemToAddToppingOn = mnuItem;
                    break;
                }
            }

            //var menuItemToAddToppingOn = item.Product.GetMenuItem(menuId);
            if (menuItemToAddToppingOn == null)
                return;

            if (toppingId != 0)
            {
                var isExcluding = toppingId < 0;

                var topping = new MenuTopping(menuId,subMenuId, Math.Abs(toppingId));
                topping.Load(IsDeliveryOrder);

                if (!string.IsNullOrWhiteSpace(topping.Name) && !menuItemToAddToppingOn.Contains(topping))
                {
                    if (isExcluding)
                    {
                        topping.Name = "NO " + topping.Name;
                        topping.UnitPrice = 0;
                    }
                    else
                    {
                        if (toppingPos.ToLower() == "left")
                        {
                            topping.Name = "LEFT " + topping.Name;
                        }
                        else
                        {
                            if (toppingPos.ToLower() == "right")
                            {
                                topping.Name = "RIGHT " + topping.Name;
                            }
                        }
                    }

                    menuItemToAddToppingOn.Items.Add(topping);
                }
            }
        }