public static void PowerSearchItems()
        {
            var nutritionix = new NutritionixClient();
            nutritionix.Initialize(AppId, AppKey);

            var request = new PowerSearchRequest
            {
                Query = "starbucks AND frap*",
                Fields = new SearchResultFieldCollection {x => x.Name, x => x.NutritionFact_Calories, x => x.ItemType},
                SortBy = new SearchResultSort(x => x.NutritionFact_Calories, SortOrder.Descending),
                Filters = new SearchFilterCollection
                {
                    new ItemTypeFilter {Negated = true, ItemType = ItemType.Packaged}
                }
            };

            Console.WriteLine("Power Searching Nutritionix for: 'starbucks AND frap*' sorted by calories, not a packaged food...");
            SearchResponse response = nutritionix.SearchItems(request);

            Console.WriteLine("Displaying results 1 - {0} of {1}", response.Results.Length, response.TotalResults);
            foreach (SearchResult result in response.Results)
            {
                Console.WriteLine("* {0} ({1} calories) from the {2} database", result.Item.Name, result.Item.NutritionFact_Calories, result.Item.ItemType);
            }

            Console.WriteLine();
        }
        public static void PowerSearchItems()
        {
            var nutritionix = new NutritionixClient();

            nutritionix.Initialize(AppId, AppKey);

            var request = new PowerSearchRequest
            {
                Queries = new QueryFilterCollection {
                    new QueryFilter(x => x.Name, "frap*"), new QueryFilter(x => x.BrandName, "Starbucks")
                },
                Fields = new SearchResultFieldCollection {
                    x => x.Name, x => x.BrandName, x => x.NutritionFact_Calories, x => x.ItemType
                },
                SortBy  = new SearchResultSort(x => x.NutritionFact_Calories, SortOrder.Descending),
                Filters = new SearchFilterCollection
                {
                    new ItemTypeFilter {
                        Negated = true, ItemType = ItemType.Packaged
                    }
                }
            };

            Console.WriteLine("Power Searching Nutritionix for: Item Name: 'frap*' and Brand Name: 'Starbucks' sorted by calories, not a packaged food...");
            SearchResponse response = nutritionix.SearchItems(request);

            Console.WriteLine("Displaying results 1 - {0} of {1}", response.Results.Length, response.TotalResults);
            foreach (SearchResult result in response.Results)
            {
                Console.WriteLine("* {0} {1} ({2} calories) from the {3} database", result.Item.BrandName, result.Item.Name, result.Item.NutritionFact_Calories, result.Item.ItemType);
            }

            Console.WriteLine();
        }
        public void Serialize_MinScore()
        {
            var request = new PowerSearchRequest {MinimumScore = 0.5};

            string json = JsonConvert.SerializeObject(request);

            StringAssert.Contains("\"min_score\":0.5", json);
        }
        public void Serialize_MinScore()
        {
            var request = new PowerSearchRequest {
                MinimumScore = 0.5
            };

            string json = JsonConvert.SerializeObject(request);

            StringAssert.Contains("\"min_score\":0.5", json);
        }
        public void Serialize_Filters()
        {
            var request = new PowerSearchRequest
            {
                Filters = new SearchFilterCollection
                {
                    new ItemTypeFilter {ItemType = ItemType.Restaurant},
                    new ComparisonFilter(x => x.NutritionFact_Calories){Operator = ComparisonOperator.LessThan, Value = 100}
                }
            };

            string json = JsonConvert.SerializeObject(request);

            StringAssert.Contains("\"filters\":{\"item_type\":1,\"nf_calories\":{\"lt\":100}}", json);
        }
        public void PowerSearch_ReturnsPopulatedResults()
        {
            var sampleResponse = new SearchResponse
            {
                TotalResults = 1,
                Results = new[] {new SearchResult()}
            };
            string json = JsonConvert.SerializeObject(sampleResponse);
            MockResponse(json);

            var request = new PowerSearchRequest {Query = "foobar"};
            SearchResponse response = _nutritionix.SearchItems(request);

            Assert.AreEqual(1, response.Results.Length);
        }
        public void PowerSearch_ReturnsPopulatedResults()
        {
            var sampleResponse = new SearchResponse
            {
                TotalResults = 1,
                Results      = new[] { new SearchResult() }
            };
            string json = JsonConvert.SerializeObject(sampleResponse);

            MockResponse(json);

            var request = new PowerSearchRequest {
                Query = "foobar"
            };
            SearchResponse response = _nutritionix.SearchItems(request);

            Assert.AreEqual(1, response.Results.Length);
        }
        public void Serialize_Filters()
        {
            var request = new PowerSearchRequest
            {
                Filters = new SearchFilterCollection
                {
                    new ItemTypeFilter {
                        ItemType = ItemType.Restaurant
                    },
                    new ComparisonFilter(x => x.NutritionFact_Calories)
                    {
                        Operator = ComparisonOperator.LessThan, Value = 100
                    }
                }
            };

            string json = JsonConvert.SerializeObject(request);

            StringAssert.Contains("\"filters\":{\"item_type\":1,\"nf_calories\":{\"lt\":100}}", json);
        }
        public static ICollection <Item> PowerSearchItems(string foodName, string brandName, bool isRestaurant, bool isPackaged, bool isUsda)
        {
            var nutritionix = new NutritionixClient();

            nutritionix.Initialize(AppId, AppKey);
            var request = new PowerSearchRequest();

            request.Queries = new QueryFilterCollection();
            if (!String.IsNullOrEmpty(foodName))
            {
                request.Queries.Add(new QueryFilter(x => x.Name, foodName));
            }
            if (!String.IsNullOrEmpty(brandName))
            {
                request.Queries.Add(new QueryFilter(x => x.BrandName, brandName));
            }

            request.Fields = new SearchResultFieldCollection
            {
                x => x.Name,
                x => x.BrandName,
                x => x.NutritionFact_Calories,
                x => x.NutritionFact_TotalCarbohydrate,
                x => x.NutritionFact_Protein,
                x => x.NutritionFact_TotalFat,
                x => x.NutritionFact_Sugar,
                x => x.NutritionFact_DietaryFiber,
                x => x.ItemType
            };


            request.SortBy = new SearchResultSort(x => x.NutritionFact_Calories, SortOrder.Descending);


            request.Filters = new SearchFilterCollection();
            if (isRestaurant)
            {
                request.Filters.Add(new ItemTypeFilter {
                    Negated = false, ItemType = ItemType.Restaurant
                });
            }
            if (isPackaged)
            {
                request.Filters.Add(new ItemTypeFilter {
                    Negated = false, ItemType = ItemType.Packaged
                });
            }
            if (isUsda)
            {
                request.Filters.Add(new ItemTypeFilter {
                    Negated = false, ItemType = ItemType.USDA
                });
            }
            SearchResponse response      = nutritionix.SearchItems(request);
            List <Item>    searchResults = new List <Item>();

            foreach (SearchResult result in response.Results)
            {
                searchResults.Add(new Item()
                {
                    BrandName = result.Item.BrandName,
                    Name      = result.Item.Name,
                    NutritionFact_Calories          = result.Item.NutritionFact_Calories,
                    NutritionFact_Sugar             = result.Item.NutritionFact_Sugar,
                    NutritionFact_TotalCarbohydrate = result.Item.NutritionFact_TotalCarbohydrate,
                    NutritionFact_Protein           = result.Item.NutritionFact_Protein,
                    NutritionFact_TotalFat          = result.Item.NutritionFact_TotalFat,
                    NutritionFact_DietaryFiber      = result.Item.NutritionFact_DietaryFiber,
                    ItemType = result.Item.ItemType
                });
            }

            return(searchResults);
        }