Esempio n. 1
0
        /// <summary>
        /// Gets the filters, gets new lists using the filters, and reloads the page
        /// </summary>
        /// <param name="SearchTerms">Phrase to search for</param>
        /// <param name="Category">Entree, Side, or Drink</param>
        /// <param name="PriceMin">Min price</param>
        /// <param name="PriceMax">Max price</param>
        /// <param name="CalorieMin">min Calorie</param>
        /// <param name="CalorieMax">max Calorie</param>
        public void OnGet(string SearchTerms, string[] Category, double?PriceMin, double?PriceMax, int?CalorieMin, int?CalorieMax)
        {
            this.SearchTerms = SearchTerms;
            this.Category    = Category;
            this.PriceMin    = PriceMin;
            this.PriceMax    = PriceMax;
            this.CalorieMin  = CalorieMin;
            this.CalorieMax  = CalorieMax;
            Entrees          = Menu.Entrees();
            Sides            = Menu.Sides();
            Drinks           = Menu.Drinks();

            if (SearchTerms != null && SearchTerms != "")
            {
                string[] array = SearchTerms.Split(' ');
                int      count = 0;
                foreach (string k in array)
                {
                    array[count] = k.ToLower();
                    count++;
                }

                Entrees = Entrees.Where(entree => Entrees.ToString() != null && (entree.ToString().Contains(SearchTerms, StringComparison.OrdinalIgnoreCase) || array.Any(entree.Description.ToLower().Contains)));
                Sides   = Sides.Where(side => Sides.ToString() != null && (side.ToString().Contains(SearchTerms, StringComparison.OrdinalIgnoreCase) || array.Any(side.Description.ToLower().Contains)));
                Drinks  = Drinks.Where(drink => Drinks.ToString() != null && (drink.ToString().Contains(SearchTerms, StringComparison.OrdinalIgnoreCase) || array.Any(drink.Description.ToLower().Contains)));
            }

            if (Category.Count() != 0)
            {
                bool[] cont = new bool[3];

                foreach (string item in Category)
                {
                    switch (item)
                    {
                    case "Entree":
                        cont[0] = true;
                        break;

                    case "Side":
                        cont[1] = true;
                        break;

                    case "Drink":
                        cont[2] = true;
                        break;
                    }
                }
                if (!cont[0])
                {
                    Entrees = new List <IOrderItem>();
                }
                if (!cont[1])
                {
                    Sides = new List <IOrderItem>();
                }
                if (!cont[2])
                {
                    Drinks = new List <IOrderItem>();
                }
            }

            ///?PriceMin=0&PriceMax=1&Category=Side&CalorieMin=0&CalorieMax=100&SearchTerms=vokun

            if (CalorieMin != null && CalorieMax == null)
            {
                Entrees = Entrees.Where(entree => entree.Calories >= CalorieMin);
                Sides   = Sides.Where(side => side.Calories >= CalorieMin);
                Drinks  = Drinks.Where(drink => drink.Calories >= CalorieMin);
            }

            if (CalorieMin == null && CalorieMax != null)
            {
                Entrees = Entrees.Where(entree => entree.Calories <= CalorieMax);
                Sides   = Sides.Where(side => side.Calories <= CalorieMax);
                Drinks  = Drinks.Where(drink => drink.Calories <= CalorieMax);
            }

            if (CalorieMin != null && CalorieMax != null)
            {
                Entrees = Entrees.Where(entree => entree.Calories >= CalorieMin && entree.Calories <= CalorieMax);
                Sides   = Sides.Where(side => side.Calories >= CalorieMin && side.Calories <= CalorieMax);
                Drinks  = Drinks.Where(drink => drink.Calories >= CalorieMin && drink.Calories <= CalorieMax);
            }

            if (PriceMin != null && PriceMax == null)
            {
                Entrees = Entrees.Where(entree => entree.Price >= PriceMin);
                Sides   = Sides.Where(side => side.Price >= PriceMin);
                Drinks  = Drinks.Where(drink => drink.Price >= PriceMin);
            }

            if (PriceMin == null && PriceMax != null)
            {
                Entrees = Entrees.Where(entree => entree.Price <= PriceMax);
                Sides   = Sides.Where(side => side.Price <= PriceMax);
                Drinks  = Drinks.Where(drink => drink.Price <= PriceMax);
            }

            if (PriceMin != null && PriceMax != null)
            {
                Entrees = Entrees.Where(entree => entree.Price >= PriceMin && entree.Price <= PriceMax);
                Sides   = Sides.Where(side => side.Price >= PriceMin && side.Price <= PriceMax);
                Drinks  = Drinks.Where(drink => drink.Price >= PriceMin && drink.Price <= PriceMax);
            }

            Entrees = Entrees.ToList();
            Sides   = Sides.ToList();
            Drinks  = Drinks.ToList();

            /*
             * Entrees = Menu.Search(Entrees, SearchTerms);
             * Sides = Menu.Search(Sides, SearchTerms);
             * Drinks = Menu.Search(Drinks, SearchTerms);
             *
             * Entrees = Menu.FilterByCategory(Entrees, Category);
             * Sides = Menu.FilterByCategory(Sides, Category);
             * Drinks = Menu.FilterByCategory(Drinks, Category);
             *
             * Entrees = Menu.FilterByCalories(Entrees, CalorieMin, CalorieMax);
             * Sides = Menu.FilterByCalories(Sides, CalorieMin, CalorieMax);
             * Drinks = Menu.FilterByCalories(Drinks, CalorieMin, CalorieMax);
             *
             * Entrees = Menu.FilterByPrice(Entrees, PriceMin, PriceMax);
             * Sides = Menu.FilterByPrice(Sides, PriceMin, PriceMax);
             * Drinks = Menu.FilterByPrice(Drinks, PriceMin, PriceMax);*/
        }