public BasketItem(Product product, NonNegativeQuantity quantity)
 {
     _id = Guid.NewGuid();
     _price = product.price;
     _product_id = product.id;
     _quantity = quantity;
 }
Пример #2
0
        public void add(Product product)
        {
            // TODO: Check for null values and invalid data

            if (basket_contains_an_item_for(product))
                get_item_for(product).increase_item_quantity_by(new NonNegativeQuantity(1));
            else
                _items.Add(BasketItemFactory.create_item_for(product));

            DomainEvents.raise(new BasketPriceChanged(this._id, amount_to_pay()));
        }
 public bool contains(Product product)
 {
     return _product_id == product.id;
 }
Пример #4
0
        public void change_quantity_of_product(NonNegativeQuantity quantity, Product product)
        {
            // TODO: Check for null values and invalid data

            if (basket_contains_an_item_for(product))
            {
                if (quantity.is_zero())
                {
                    remove_product_with_id_of(product.id);
                }
                else
                    get_item_for(product).change_item_quantity_to(quantity);

                DomainEvents.raise(new BasketPriceChanged(this._id, amount_to_pay()));
            }
        }
Пример #5
0
 private BasketItem get_item_for(Product product)
 {
     return _items.Where(i => i.contains(product)).FirstOrDefault();
 }
Пример #6
0
 private bool basket_contains_an_item_for(Product product)
 {
     return _items.Any(i => i.contains(product));
 }
 public static BasketItem create_item_for(Product product)
 {
     return new BasketItem(product, new NonNegativeQuantity(1));
 }