Example #1
0
 public ItemStockMustBeAvailableRule(IItemStockChecker itemStockChecker, int itemId,
                                     int quantity)
 {
     _itemStockChecker = itemStockChecker;
     _itemId           = itemId;
     _quantity         = quantity;
 }
Example #2
0
        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));
        }
Example #3
0
        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;
 }
Example #5
0
 public ChangeQuantityOfBasketItemCommandHandler(IRepository <Basket> basketRepository,
                                                 IItemStockChecker itemStockChecker)
 {
     _basketRepository = basketRepository;
     _itemStockChecker = itemStockChecker;
 }