public void PriceItem(OrderLineItem lineItem, int quantity) { lineItem.Product = Name; lineItem.Quantity = quantity; lineItem.ListPrice = (decimal)Price; lineItem.OrderPrice = lineItem.ListPrice; }
private OrderLineItem Price(string productName, int quantity, DateTime orderDate) { OrderLineItem item = new OrderLineItem(); CatalogItem currentPrice = null; //CatalogItem currentPricing = this.Select(x => x.Name == productName && orderDate >= x.Effective.From && orderDate <= x.Effective.To).First(); //var pricingItem = this.Select(x => x.Name == productName && orderDate >= x.Effective.From && x.Effective.To == null || orderDate <= x.Effective.To)).First(); foreach (CatalogItem pricingItem in this) { if (productName == pricingItem.Name && orderDate >= pricingItem.Effective.From && pricingItem.Effective.To == null || orderDate <= pricingItem.Effective.To) { currentPrice = pricingItem; break; } } if (currentPrice == null || currentPrice.Price == null) { throw new KeyNotFoundException(string.Format("Product \"{0}\" is missing pricing information for {1}", productName, orderDate.ToShortDateString())); } currentPrice.PriceItem(item, quantity); /* * item = new OrderLineItem() * { * Product = currentPrice.Name * , Quantity = quantity * , ListPrice = (decimal)currentPrice.Price * , OrderPrice = Convert.ToDecimal(quantity) * (decimal)currentPrice.Price * }; */ return(item); }