public BasketItem(Product product, NonNegativeQuantity quantity) { _id = Guid.NewGuid(); _price = product.price; _product_id = product.id; _quantity = quantity; }
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; }
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())); } }
private BasketItem get_item_for(Product product) { return _items.Where(i => i.contains(product)).FirstOrDefault(); }
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)); }