public List <ChallengeInfoViewModel> Search(ChallengesSearchOptions searchOptions)
        {
            var queryParameters = new ChallengeQueryParameters
            {
                PageRule    = searchOptions.PageRule,
                IncludeTags = true
            };

            var filterSettingsBuilder = FilterSettingsBuilder <Challenge> .Create();

            if (!searchOptions.Keyword.IsNullOrEmpty())
            {
                try
                {
                    PopulateFilterSettings(filterSettingsBuilder, searchOptions.Keyword);
                }
                catch (NoResultsException)
                {
                    return(new List <ChallengeInfoViewModel>());
                }
            }

            queryParameters.FilterSettings = filterSettingsBuilder.GetSettings();

            var challenges = unitOfWork.GetAll <Challenge>(queryParameters);

            return(mapper.Map <List <ChallengeInfoViewModel> >(challenges));
        }
        public List <ChallengeInfoViewModel> SearchByRule(ChallengesSearchOptions searchOptions)
        {
            Contract.NotNull <ArgumentNullException>(searchOptions);
            Contract.NotNull <ArgumentException>(searchOptions.PageRule);
            Contract.Assert <InvalidOperationException>(searchOptions.PageRule.IsValid);

            var searchType = searchOptions.SearchTypes.IsNullOrEmpty()
                ? DefaultSearchType
                : searchOptions.SearchTypes.First();

            return(searchStrategies[searchType].Value.Search(searchOptions));
        }
Example #3
0
        public List <ChallengeInfoViewModel> Search(ChallengesSearchOptions searchOptions)
        {
            var queryParameters = new ChallengeQueryParameters
            {
                PageRule = searchOptions.PageRule
            };

            if (!searchOptions.Keyword.IsNullOrEmpty())
            {
                queryParameters.Tags = searchOptions.Keyword.ConvertToList();
            }

            var challenges = unitOfWork.GetAll <Challenge>(queryParameters);

            return(mapper.Map <List <ChallengeInfoViewModel> >(challenges));
        }
Example #4
0
 public List <ChallengeInfoViewModel> Search([FromBody] ChallengesSearchOptions searchOptions)
 {
     return(challengesService.SearchByRule(searchOptions));
 }