Example #1
0
        public decimal GetPrice(CheckoutItem checkoutItem)
        {
            var specialOffer = this.specialOfferRepository.GetBySku(checkoutItem.Sku);

            if (specialOffer == null || specialOffer.Quantity > checkoutItem.Quantity)
            {
                return(checkoutItem.Price * checkoutItem.Quantity);
            }
            else
            {
                int offerQuantity = checkoutItem.Quantity / specialOffer.Quantity;
                int remainder     = checkoutItem.Quantity % specialOffer.Quantity;

                return((specialOffer.OfferPrice * offerQuantity) + (remainder * checkoutItem.Price));
            }
        }
Example #2
0
        /// <summary>
        /// Scan an item into the Checkout
        /// </summary>
        /// <param name="item"></param>
        public void Scan(Item item)
        {
            //validation
            if (item == null)
            {
                throw new ArgumentNullException(nameof(item));
            }

            //lookup the item in the list
            CheckoutItem checkoutItem = this.checkoutItems.FirstOrDefault(p => p.Sku == item.Sku);

            if (checkoutItem == null)
            {
                //no item with sku was found so create one and add to list (without quantity initially)
                checkoutItem = new CheckoutItem {
                    Sku = item.Sku, Price = item.ItemPrice
                };
                this.checkoutItems.Add(checkoutItem);
            }
            //increment quantity
            checkoutItem.Quantity++;
        }