Esempio n. 1
0
        public async Task <PostsViewModel> GetOrderedPostsBySubredditAsync(
            string subredditId,
            IRequestCookieCollection requestCookies)
        {
            var dbSubreddit = await this.redditCloneUnitOfWork.Subreddits
                              .GetByIdAsync(subredditId);

            if (dbSubreddit == null)
            {
                return(null);
            }

            var postSortType      = this.cookieService.GetPostSortTypeFromCookieOrDefault(requestCookies);
            var postTimeFrameType = this.cookieService.GetPostTimeFrameTypeFromCookieOrDefault(requestCookies);

            var timeFrame         = TimeFrameFactory.GetTimeFrame(postTimeFrameType);
            var sortPostsStrategy = SortPostsStartegyFactory
                                    .GetSortPostsStrategy(this.redditCloneUnitOfWork, timeFrame, postSortType);

            var dbPosts = await this.redditCloneUnitOfWork.Posts
                          .GetBySubredditSortedBy(subredditId, sortPostsStrategy);

            var model = this.postMapper.MapPostsViewModelForQuest(
                dbPosts, postSortType, sortPostsStrategy, postTimeFrameType);

            return(model);
        }
Esempio n. 2
0
        public async Task <PostsViewModel> GetOrderedPostsAsync(
            ClaimsPrincipal user,
            IRequestCookieCollection requestCookies,
            IResponseCookies responseCookies)
        {
            var postSortType      = this.cookieService.GetPostSortTypeFromCookieOrDefault(requestCookies);
            var postTimeFrameType = this.cookieService.GetPostTimeFrameTypeFromCookieOrDefault(requestCookies);

            var timeFrame         = TimeFrameFactory.GetTimeFrame(postTimeFrameType);
            var sortPostsStrategy = SortPostsStartegyFactory
                                    .GetSortPostsStrategy(this.redditCloneUnitOfWork, timeFrame, postSortType);

            var dbUserId = this.userManager.GetUserId(user);
            var dbPosts  = await this.redditCloneUnitOfWork.Posts
                           .GetBySubcribedUserSortedByAsync(dbUserId, sortPostsStrategy);

            if (dbPosts.Count() == 0)
            {
                dbPosts = await this.redditCloneUnitOfWork.Posts.GetAllSortedByAsync(sortPostsStrategy);
            }

            var model = this.postMapper
                        .MapPostsViewModelForSignInUser(dbPosts, dbUserId, postSortType, sortPostsStrategy, postTimeFrameType);

            return(model);
        }
Esempio n. 3
0
        public async Task <PostsViewModel> GetOrderedPostsByKeyWordsAsync(
            string[] keyWords,
            PostSortType sortType,
            TimeFrameType timeFrameType)
        {
            var timeFrame    = TimeFrameFactory.GetTimeFrame(timeFrameType);
            var sortStrategy = SortPostsStartegyFactory
                               .GetSortPostsStrategy(this.redditCloneUnitOfWork, timeFrame, sortType);

            var filteredPosts = await this.redditCloneUnitOfWork.Posts
                                .GetByKeyWordsSortedByAsync(keyWords, sortStrategy);

            var model = this.postMapper.MapPostsViewModelForQuest(filteredPosts, sortType, sortStrategy, timeFrameType);

            return(model);
        }
Esempio n. 4
0
        public async Task <PostsViewModel> GetOrderedPostsAsync(IRequestCookieCollection requestCookies)
        {
            var postSortType      = this.cookieService.GetPostSortTypeFromCookieOrDefault(requestCookies);
            var postTimeFrameType = this.cookieService.GetPostTimeFrameTypeFromCookieOrDefault(requestCookies);

            var timeFrame         = TimeFrameFactory.GetTimeFrame(postTimeFrameType);
            var sortPostsStrategy = SortPostsStartegyFactory
                                    .GetSortPostsStrategy(this.redditCloneUnitOfWork, timeFrame, postSortType);

            var dbPosts = await this.redditCloneUnitOfWork.Posts
                          .GetAllSortedByAsync(sortPostsStrategy);

            var model =
                this.postMapper.MapPostsViewModelForQuest(dbPosts, postSortType, sortPostsStrategy, postTimeFrameType);

            return(model);
        }