/// <summary> /// Scans in a new item for the order. /// </summary> /// <param name="item">The item to add to the order.</param> public void Scan(Item item) { if (item != null && _kataItemsDatabaseAccess.CheckItemExists(item.Sku)) { if (_order.CheckForItemInOrder(item)) { _order.IncrementItemQty(item); } else { _order.CreateOrderLineForItem(item); } int currentlyScannedItemQty = _order.GetItemsOrderLine(item).Qty; decimal totalPrice = CalculateTotalPrice(item, currentlyScannedItemQty); decimal discountPrice = 0m; if (_kataItemsDatabaseAccess.CheckItemEligableForDiscount(item.Sku)) { discountPrice = CalculateDiscountPrice(item, currentlyScannedItemQty); } else { discountPrice = CalculateTotalPrice(item, currentlyScannedItemQty); } _order.SetItemTotalPrice(item, totalPrice); _order.SetItemDiscountPrice(item, discountPrice); } else { throw new Exception("Item does not exist."); } }