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);
                }
            }
        }
        public void AddDressingOnMenuItem(string cartItemId, int menuId, int dressingId)
        {
            if (dressingId > 0)
            {
                var cartItem = Items.FirstOrDefault(i => i.CartId == cartItemId);
                if (cartItem != null)
                {
                    var menuItemToAddDressingOn = cartItem.Product.GetMenuItem(menuId);
                    if (menuItemToAddDressingOn == null)
                    {
                        AddMenuItemOnToExistedDeal(cartItem.CartId, menuId, 0);
                        menuItemToAddDressingOn = cartItem.Product.GetMenuItem(menuId);
                    }

                    var dressing = new MenuDressing(menuId, dressingId);
                    dressing.Load(IsDeliveryOrder);
                    if (menuItemToAddDressingOn != null && !menuItemToAddDressingOn.Contains(dressing))
                    {
                        menuItemToAddDressingOn.Items.Add(dressing);
                    }
                }
            }
        }