public async Task <SubredditsViewModel> GetOrderedSubredditsFilterByKeyWordsAsync(
            string[] keyWords,
            SubredditSortType sortType)
        {
            var sortStrategy = SortSubredditStrategyFactory
                               .GetSubredditSortStrategy(this.redditCloneUnitOfWork, sortType);

            var filteredSubreddits = await this.redditCloneUnitOfWork.Subreddits
                                     .GetByKeyWordsSortedByAsync(keyWords, sortStrategy);

            var model = new SubredditsViewModel()
            {
                SubrreditSortType = sortType,
                Subreddits        = this.mapper.Map <IEnumerable <SubredditConciseViewModel> >(filteredSubreddits)
            };

            return(model);
        }
        public static ISubredditSortStrategy GetSubredditSortStrategy(
            IRedditCloneUnitOfWork unitOfWork,
            SubredditSortType postSortType)
        {
            switch (postSortType)
            {
            case SubredditSortType.New:
                return(new SortSubredditByNew(unitOfWork));

            case SubredditSortType.Old:
                return(new SortSubredditByOld(unitOfWork));

            case SubredditSortType.Top:
                return(new SortSubredditByTop(unitOfWork));

            default:
                throw new InvalidEnumArgumentException();
            }
        }
Exemplo n.º 3
0
        public async Task <SearchResultViewModel> GetSearchResultAsync(
            string[] keyWords,
            SubredditSortType subredditSortType,
            PostSortType postSortType,
            TimeFrameType postTimeFrameType)
        {
            var subredditModels = await this.questSubredditService
                                  .GetOrderedSubredditsFilterByKeyWordsAsync(keyWords, subredditSortType);

            var postModels = await this.questPostService
                             .GetOrderedPostsByKeyWordsAsync(keyWords, postSortType, postTimeFrameType);

            var searchModel = new SearchResultViewModel
            {
                Subreddits = subredditModels,
                Posts      = postModels,
                KeyWords   = string.Join(" ", keyWords)
            };

            return(searchModel);
        }