public double RequestOrder(Order order) { foreach (KeyValuePair<int, int> requestedItem in order.OrderedItems) { bool found = false; foreach (Product product in products) { if (product.Id == requestedItem.Key) { if (product.Quantity >= requestedItem.Value) { found = true; } } } if (!found) throw new NotAvailableInInventoryException("Some items are unavailable!"); } double price = 0; foreach (var requestedItem in order.OrderedItems) { foreach (var product in products) { if (product.Id == requestedItem.Key) { product.Quantity = product.Quantity - requestedItem.Value; price += requestedItem.Value * product.AfterTaxPrice; } } } return price; }
public double RequestOrder(Order order) { double sum = 0; for(int i = 0; i < order.ProductIds.Count; i++) { bool success = false; //shorter version using LINQ: //var product = products.FirstOrDefault(p => p.Id == order.ProductIds[i]); Product product = null; foreach (var p in products) { if (p.Id == order.ProductIds[i]) { product = p; break; } } if(product != null && product.Quantity >= order.ProductQuantities[i]) { sum += product.SinglePriceWithTax * order.ProductQuantities[i]; success = true; } if(!success) { throw new NotAvailableInInventoryException(order.ProductIds[i], order.ProductQuantities[i]); } } return sum; }
static void Main(string[] args) { var inventory = GetInventory(); Console.WriteLine(string.Format("Audit: {0}", inventory.Audit())); var order = new Order( new int[] { 1, 3, 5 }, new int[] { 5, 7, 100 } ); Console.WriteLine(string.Format("RequestOrder: {0}", inventory.RequestOrder(order))); Console.ReadKey(); }