Exemple #1
0
        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);
        }