예제 #1
0
        private async Task <List <FoodViewModel> > ExecuteSearch(FoodSearchViewModel VM)
        {
            VM.Results.Clear();
            List <FoodViewModel> results = new List <FoodViewModel>();

            List <Food> localFoods = (List <Food>) await _foodService.Search(VM.SearchName, VM.Brand, VM.CalsMin, VM.CalsMax, VM.MacCMin, VM.MacCMax, VM.MacPMin, VM.MacPMax, VM.MacFMin, VM.MacFMax);

            foreach (Food f in localFoods)
            {
                results.Add(new FoodViewModel(f));
            }

            List <FoodViewModel> APIFoods = ExecuteAPISearch(VM).Result;

            foreach (FoodViewModel f in APIFoods.ToList())
            {
                //Refine search by ranges because API doesn't offer feature
                if (f.Cals > VM.CalsMin && f.Cals < VM.CalsMax && f.MacC > VM.MacCMin && f.MacC < VM.MacCMax && f.MacP > VM.MacPMin && f.MacP < VM.MacPMax && f.MacP > VM.MacPMin && f.MacP < VM.MacPMax)
                {
                    results.Add(f);
                }
            }

            VM.Date = HttpContext.Session.GetString("MealDate");
            return(results);
        }
예제 #2
0
        public async Task <IActionResult> SearchClear(FoodSearchViewModel VM)
        {
            VM.SearchName = null;
            VM.MealType   = 0;
            VM.Results    = await ExecuteSearch(VM);

            VM.Date = HttpContext.Session.GetString("MealDate");
            ModelState.Clear();
            return(View("SearchFood", VM));
        }
예제 #3
0
        private async Task <List <FoodViewModel> > ExecuteAPISearch(FoodSearchViewModel VM)
        {
            VM.Results.Clear();
            List <Food> results = (List <Food>) await APIHelper.SearchFood(VM.SearchName, VM.Brand);

            foreach (Food f in results)
            {
                VM.Results.Add(new FoodViewModel(f));
            }
            VM.Date = HttpContext.Session.GetString("SearchMealDate");
            return(VM.Results);
        }
예제 #4
0
        public async Task <IActionResult> SearchFoodForMeal(int MealID, String date, int mealType)
        {
            //Using session instead of hidden VM vals because it can be used by multiple methods
            HttpContext.Session.SetInt32("MealID", MealID);
            HttpContext.Session.SetString("MealDate", date);
            HttpContext.Session.SetInt32("MealType", mealType);

            FoodSearchViewModel VM = new FoodSearchViewModel();

            VM.Results = await ExecuteSearch(VM);

            VM.Date     = date;
            VM.MealType = 0;

            return(View("SearchFood", VM));
        }
예제 #5
0
        public async Task <IIndexResponse> Index(FoodSearchViewModel item)
        {
            var model = new FoodSearch
            {
                Id               = item.Id,
                Description      = item.Description,
                FoodLocationId   = item.FoodLocationId,
                FoodLocationName = item.FoodLocationName,
                Image            = item.Image,
                Name             = item.Name,
                Price            = item.Price,
                PriceOld         = item.PriceOld,
                Location         = new GeoLocation(item.Latitude, item.Longitude),
                Category         = item.Category,
                Tag              = " " + item.Name.ToLower() + " " + convertToUnSign3(item.Name.ToLower()) + " ",
                CategoryLocation = item.CategoryLocation
            };

            return(await _client.IndexAsync <FoodSearch>(model, i => i
                                                         .Index("food")
                                                         .Type("foodsearch")
                                                         .Id(model.Id)
                                                         .Refresh(Elasticsearch.Net.Refresh.True)));
        }
예제 #6
0
        public async Task <IActionResult> Search(FoodSearchViewModel VM)
        {
            VM.Results = await ExecuteSearch(VM);

            return(View("SearchFood", VM));
        }
예제 #7
0
 public async Task <IDeleteResponse> Delete(FoodSearchViewModel model)
 {
     return(await _client.DeleteAsync <FoodSearch>(model.Id, d => d
                                                   .Index("food")
                                                   .Type("foodsearch")));
 }