public async Task <IActionResult> SearchRecipes([FromQuery] RecipeSearchParameters searchParams) { if (!ModelState.IsValid) { return(BadRequest()); } // Adjust for asterix values if (searchParams.Base == "*") { searchParams.Base = null; } if (searchParams.BeginsWith == "*") { searchParams.BeginsWith = null; } if (searchParams.Course == "*") { searchParams.Course = null; } // Fetch results var results = await recipeService.RecipeSearch(Mapper.Map <RecipeSearchParameters>(searchParams)); return(Ok(Mapper.Map <IEnumerable <RecipeReturnModel> >(results))); }
/// <summary> /// Returns list of Recipes based on input search criteria /// </summary> /// <param name="SearchParameters"></param> /// <returns></returns> public async Task <IEnumerable <Recipe> > RecipeSearch(RecipeSearchParameters SearchParameters) { var predicate = PredicateBuilder.True <Recipe>(); //if (SearchParameters.Base.HasValue) //{ // predicate = predicate.And(x => x.Base == SearchParameters.Base.Value); //} if (!string.IsNullOrEmpty(SearchParameters.Base)) { predicate = predicate.And(x => x.Base == SearchParameters.Base); } //if (SearchParameters.Course.HasValue) //{ // predicate = predicate.And(x => x.Course == SearchParameters.Course.Value); //} if (!string.IsNullOrEmpty(SearchParameters.Course)) { predicate = predicate.And(x => x.Course == SearchParameters.Course); } if (!string.IsNullOrEmpty(SearchParameters.BeginsWith)) { predicate = predicate.And(x => x.Name.StartsWith(SearchParameters.BeginsWith)); } // Search var results = await recipeRepository.Find(predicate); return(results); }