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();
        }
Beispiel #2
0
        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);
        }