public ItemStockMustBeAvailableRule(IItemStockChecker itemStockChecker, int itemId, int quantity) { _itemStockChecker = itemStockChecker; _itemId = itemId; _quantity = quantity; }
public void AddItem(int itemId, int quantity, IItemStockChecker itemStockChecker) { if (quantity <= 0) { throw new BasketInvalidItemQuantityException("Sepete eklemek istediğiniz ürün miktarını seçmelisiniz."); } CheckRule(new ItemStockMustBeAvailableRule(itemStockChecker, itemId, quantity)); if (AlreadyInBasketWithSameQuantity(itemId, quantity)) { return; } if (AlreadyInBasketButDifferentQuantity(itemId, quantity)) { ChangeItemQuantity(itemId, quantity, itemStockChecker); return; } var item = BasketItem.Create(itemId, quantity); Items.Add(item); AddEvent(new BasketItemAddedEvent(CustomerId, itemId, quantity)); }
public void ChangeItemQuantity(int itemId, int quantity, IItemStockChecker itemStockChecker) { var item = Items.FirstOrDefault(x => x.ProductId == itemId); if (item == null) { throw new BasketItemNotFoundException("Ürün sepetinizde mevcut değil."); } if (quantity <= 0) { RemoveItem(itemId); return; } CheckRule(new ItemStockMustBeAvailableRule(itemStockChecker, itemId, quantity)); var oldQuantity = item.Quantity; item.ChangeQuantity(quantity); AddEvent(new BasketItemQuantityChangedEvent(CustomerId, itemId, oldQuantity, quantity)); }
public AddItemToBasketCommandHandler(IRepository <Basket> basketRepository, IItemStockChecker itemStockChecker) { _basketRepository = basketRepository; _itemStockChecker = itemStockChecker; }
public ChangeQuantityOfBasketItemCommandHandler(IRepository <Basket> basketRepository, IItemStockChecker itemStockChecker) { _basketRepository = basketRepository; _itemStockChecker = itemStockChecker; }