static void renderToppingReport() { Console.WriteLine("Popular Topping Report"); Console.WriteLine(" "); Pizzas pizzas = new Pizzas(); Console.WriteLine("Getting topping data from OLO"); Console.WriteLine("\r\n"); ToppingReport toppingReport = pizzas.GetPopularToppingReport(); Console.WriteLine("Here is your report :)"); Console.WriteLine("\r\n"); Console.WriteLine("Top 20 Topping Combinations"); Console.WriteLine("\r\n"); foreach (PopularTopping popularTopping in toppingReport.popularToppingCombinationList.Take(20)) { Console.WriteLine(string.Format("Rank: {0} | Combination: {1} | Count {2}", popularTopping.Rank, popularTopping.Name, popularTopping.Count)); } Console.WriteLine("\r\n"); Console.WriteLine("Top 20 Toppings"); Console.WriteLine("\r\n"); foreach (PopularTopping popularTopping in toppingReport.popularToppingList.Take(20)) { Console.WriteLine(string.Format("Rank: {0} | Topping: {1} | Count {2}", popularTopping.Rank, popularTopping.Name, popularTopping.Count)); } Console.WriteLine("\r\n"); Console.WriteLine("Hit Enter to Close Application "); Console.ReadLine(); }
public ToppingReport GetPopularToppingReport() { ToppingReport toppingReport = null; try { PizzaServiceClient pizzaServiceClient = new PizzaServiceClient(); List <Pizza> pizzaList = pizzaServiceClient.GetPizzaList(); if (pizzaList != null) { if (pizzaList.Count > 0) { toppingReport = new ToppingReport(); List <string> pizzaToppingList = new List <string>(); List <string> pizzaToppingCombinationList = new List <string>(); foreach (Pizza pizza in pizzaList) { if (pizza.Toppings != null) { if (pizza.Toppings.Count > 0) { //only add combinations to this list if (pizza.Toppings.Count > 1) { pizzaToppingCombinationList.Add(String.Join(",", pizza.Toppings.OrderBy(s => s).ToArray())); } pizzaToppingList.AddRange(pizza.Toppings); } } } if (pizzaToppingList.Count > 0) { toppingReport.popularToppingList = pizzaToppingList.GroupBy(s => s).Select((t, index) => new PopularTopping { Name = t.Key, Count = t.Count() }).OrderByDescending(pt => pt.Count).ToList(); toppingReport.popularToppingList = toppingReport.popularToppingList.Select((t, index) => new PopularTopping { Rank = index + 1, Name = t.Name, Count = t.Count }).OrderBy(pt => pt.Rank).ToList(); } if (pizzaToppingList.Count > 0) { toppingReport.popularToppingCombinationList = pizzaToppingCombinationList.GroupBy(s => s).Select((t, index) => new PopularTopping { Rank = index, Name = t.Key, Count = t.Count() }).OrderByDescending(pt => pt.Count).ToList(); toppingReport.popularToppingCombinationList = toppingReport.popularToppingCombinationList.Select((t, index) => new PopularTopping { Rank = index + 1, Name = t.Name, Count = t.Count }).OrderBy(pt => pt.Rank).ToList(); } } } } catch (Exception exc) { throw exc; } return(toppingReport); }