private List <Purchase> GetPurchases(ComboCost cost) { List <Purchase> purchases = new List <Purchase>(); foreach (var group in cost.Combo) { double discount; if (group.Total > 1) { discount = context.Discounts.Where(p => p.MinProductsRequired == group.Total).Select(p => p.Percent).FirstOrDefault(); } else { discount = 0; } foreach (var product in group.Products) { purchases.Add(new Purchase { Product = product, Discount = discount }); } } return(purchases); }
public IEnumerable <Purchase> CalculateCost(IEnumerable <string> productSkus) { if (productSkus.Count() == 0) { return(new List <Purchase>()); } var products = GetProducts(productSkus); var combos = GetCombos(products); if (combos.Count == 0) { return(new List <Purchase>()); } ComboCost cost = CalculateMinCost(combos); List <Purchase> purchases = GetPurchases(cost); return(purchases); }