public List <Models.SpecialPrice> GetProductPrices(Models.Product product) { List <Models.SpecialPrice> result = new List <Models.SpecialPrice>(); Models.SpecialPrice defaultPrice = new Models.SpecialPrice(); bool priceCalculated = false; if (product != null) { // setup a default incase anything goes wrong defaultPrice.Minimum = 1; defaultPrice.Maximum = int.MaxValue; defaultPrice.SalesPrice = product.SalesPrice; PriceCalculator pc = new PriceCalculator(); try { result.Add(new Models.SpecialPrice() { Minimum = 1, Maximum = 4, SalesPrice = pc.CalcProductPrices(product.SalesPrice, product.CostPrice, 1, 4) }); result.Add(new Models.SpecialPrice() { Minimum = 5, Maximum = 10, SalesPrice = pc.CalcProductPrices(product.SalesPrice, product.CostPrice, 5, 10) }); result.Add(new Models.SpecialPrice() { Minimum = 11, Maximum = 20, SalesPrice = pc.CalcProductPrices(product.SalesPrice, product.CostPrice, 11, 20) }); result.Add(new Models.SpecialPrice() { Minimum = 21, Maximum = int.MaxValue, SalesPrice = pc.CalcProductPrices(product.SalesPrice, product.CostPrice, 20, int.MaxValue) }); priceCalculated = true; } catch (Exception ex) { // log some error details } if (!priceCalculated) { result.Clear(); result.Add(defaultPrice); } } return(result); }