public IActionResult OnGet(string message) { var categories = this.categoryData.GetAll().Select(c => new SelectListItem { Value = c.Id, Text = c.Name }).ToList(); categories.Insert(0, new SelectListItem { Value = string.Empty, Text = string.Empty }); Categories = categories; var minGroupServings = new SelectListGroup { Name = ServingOptions.ServingsSmall.Description }; var mediumGroupServings = new SelectListGroup { Name = ServingOptions.ServingsMedium.Description }; var largeGroupServings = new SelectListGroup { Name = ServingOptions.ServingsLarge.Description }; var servings = new List <SelectListItem> { new SelectListItem { Value = string.Empty, Text = string.Empty }, new SelectListItem { Value = ServingOptions.ServingsSmall.HighEnd.ToString(), Text = $"{ServingOptions.ServingsSmall.HighEnd.ToString()} servings", Group = minGroupServings }, new SelectListItem { Value = ServingOptions.ServingsMedium.HighEnd.ToString(), Text = $"{ServingOptions.ServingsMedium.HighEnd.ToString()} servings", Group = mediumGroupServings }, new SelectListItem { Value = ServingOptions.ServingsLarge.LowEnd.ToString(), Text = $"{ServingOptions.ServingsLarge.LowEnd.ToString()} servings", Group = largeGroupServings } }; Servings = servings; if (IsSearchValidationError(message)) { return(Page()); } var model = new MenuRecipeSearchModel { CookTimeSelected = CookTime, ServingsSelected = ServingNumber, RecipeNameSelected = RecipeName, IngredientsSelected = Ingredients?.Split(",").ToList(), CategorySelectedId = CategoryId }; return(RedirectToPage("List", "FilteredSearch", model)); }
public IActionResult OnGetFilteredSearch(MenuRecipeSearchModel menuRecipeSearchModel) { List <Recipe> recipesFiltered = new List <Recipe>(); FilterValue[] filters = new FilterValue[menuRecipeSearchModel.CountOfFiltersApplied]; int filterCount = 0; filterCount = ApplyFilter(menuRecipeSearchModel.IsCookTimeEntered, FilterType.EQUAL, Enum.GetName(typeof(CollectionMappings.RecipeFields), CollectionMappings.RecipeFields.CookTimeMinutes), new List <string> { menuRecipeSearchModel.CookTimeSelected?.ToString() }, filters, filterCount); filterCount = ApplyFilter(menuRecipeSearchModel.IsRecipeEntered, FilterType.LIKE, Enum.GetName(typeof(CollectionMappings.RecipeFields), CollectionMappings.RecipeFields.Name), new List <string> { menuRecipeSearchModel.RecipeNameSelected }, filters, filterCount); filterCount = ApplyFilter(menuRecipeSearchModel.IsIngredientsEntered, FilterType.LIKE, Enum.GetName(typeof(CollectionMappings.RecipeFields), CollectionMappings.RecipeFields.Ingredients), menuRecipeSearchModel.IngredientsSelected, filters, filterCount); filterCount = ApplyFilter(menuRecipeSearchModel.IsCategoryEntered, FilterType.EQUAL, Enum.GetName(typeof(CollectionMappings.RecipeFields), CollectionMappings.RecipeFields.CategoryId), new List <string> { menuRecipeSearchModel.CategorySelectedId }, filters, filterCount); //TODO: MONGO CRUD for range filter, less than, greater than, REFACTOR RANGE PASSED PARAMETERS TO GENERIC MONGO REPOSITORY CLASS FUNCTION if (menuRecipeSearchModel.IsServingsSelected) { ServingRangeModel servingOptions = new ServingRangeModel(); if (servingOptions.ServingsSmall.HighEnd == int.Parse(menuRecipeSearchModel.ServingsSelected)) { filterCount = ApplyFilter(menuRecipeSearchModel.IsServingsSelected, FilterType.LESS_THAN_EQUAL, Enum.GetName(typeof(CollectionMappings.RecipeFields), CollectionMappings.RecipeFields.Servings), new List <string> { servingOptions.ServingsSmall.HighEnd.ToString() }, filters, filterCount); } else if (servingOptions.ServingsMedium.HighEnd == int.Parse(menuRecipeSearchModel.ServingsSelected)) { filterCount = ApplyFilter(menuRecipeSearchModel.IsServingsSelected, FilterType.RANGE, Enum.GetName(typeof(CollectionMappings.RecipeFields), CollectionMappings.RecipeFields.Servings), new List <string> { servingOptions.ServingsMedium.LowEnd.ToString(), servingOptions.ServingsMedium.HighEnd.ToString() }, filters, filterCount); } else if (servingOptions.ServingsLarge.LowEnd == int.Parse(menuRecipeSearchModel.ServingsSelected)) { filterCount = ApplyFilter(menuRecipeSearchModel.IsServingsSelected, FilterType.GREATER_THAN_EQUAL, Enum.GetName(typeof(CollectionMappings.RecipeFields), CollectionMappings.RecipeFields.Servings), new List <string> { servingOptions.ServingsLarge.LowEnd.ToString() }, filters, filterCount); } } //filterCount = ApplyFilter(menuRecipeSearchModel.IsServingsSelected, FilterType.RANGE, Enum.GetName(typeof(CollectionMappings.RecipeFields), CollectionMappings.RecipeFields.Servings), new List<string> { "8", "10" }, filters, filterCount); //filterCount = ApplyFilter(menuRecipeSearchModel.IsServingsSelected, FilterType.RANGE, Enum.GetName(typeof(CollectionMappings.RecipeFields), CollectionMappings.RecipeFields.Servings), new List<string> { menuRecipeSearchModel.ServingsSelected }, filters, filterCount); recipesFiltered = this.recipeData.GetByOr(filters); if (recipesFiltered.Count == 0) { return(RedirectToPage("Search", new { message = "No menu recipe(s) found based on search" })); } Recipes = recipesFiltered.Select(x => new RecipeModel { RecipeId = x.Id, CategoryName = this.categoryData.GetById(x.CategoryId)?.Name, RecipeName = x.Name }).OrderBy(x => x.CategoryName).ThenBy(x => x.RecipeName); return(Page()); }