public async Task <IActionResult> Following(int page = 1, string search = null)
        {
            var userId = this.User.GetId();
            var skip   = (page - 1) * PostsPerPage;
            var count  = await this.postsService.GetFollowingCountAsync(userId);

            var posts = await this.postsService.GetAllFollowingByUserIdAsync <PostsListingViewModel>(
                userId,
                search,
                skip,
                PostsPerPage);

            foreach (var post in posts)
            {
                post.Activity = await this.postsService.GetLatestActivityByIdAsync(post.Id);

                post.Tags = await this.tagsService.GetAllByPostIdAsync <PostsTagsDetailsViewModel>(post.Id);
            }

            var viewModel = new PostsAllViewModel
            {
                Posts          = posts,
                PageIndex      = page,
                TotalPages     = (int)Math.Ceiling(count / (decimal)PostsPerPage),
                FollowingCount = await this.usersService.GetFollowingCountAsync(userId)
            };

            return(this.View(viewModel));
        }
Beispiel #2
0
        public IActionResult Index()
        {
            var viewModel = new PostsAllViewModel()
            {
                Posts = this.wallPostsService.GetAll <PostsSingleViewModel>(),
            };

            return(this.View(viewModel));
        }
Beispiel #3
0
        public async Task <IActionResult> ByUser(string username, int page = 1)
        {
            var user = await this.userManager.Users.FirstOrDefaultAsync(x => x.UserName == username);

            if (user == null)
            {
                return(this.RedirectToAction("All"));
            }

            var userId = await this.userManager.GetUserIdAsync(user);

            var postsCount = await this.postService.GetCountByUserAsync(userId);

            var pagesCount = (int)Math.Ceiling((double)postsCount / GlobalConstants.ItemsPerPage);

            if (page > pagesCount)
            {
                page = pagesCount;
            }

            if (page <= 0)
            {
                page = 1;
            }

            var posts = await this.postService
                        .GetByUserAsync <PostViewModel>(userId, GlobalConstants.ItemsPerPage, (page - 1) *GlobalConstants.ItemsPerPage);

            var result = new PostsAllViewModel
            {
                Posts      = posts,
                PagesCount = (int)Math.Ceiling((double)postsCount / GlobalConstants.ItemsPerPage),
            };

            if (result.PagesCount == 0)
            {
                result.PagesCount = 1;
            }

            if (page > result.PagesCount)
            {
                page = result.PagesCount;
            }

            result.CurrentPage = page;
            return(this.View(result));
        }
Beispiel #4
0
        public async Task <IViewComponentResult> InvokeAsync()
        {
            var suggestedPosts = await this.postsService.GetSuggestedAsync <PostsListingViewModel>(PostsToTake);

            var viewModel = new PostsAllViewModel
            {
                Posts = suggestedPosts
            };

            foreach (var post in viewModel.Posts)
            {
                post.Activity = await this.postsService.GetLatestActivityByIdAsync(post.Id);

                post.Tags = await this.tagsService.GetAllByPostIdAsync <PostsTagsDetailsViewModel>(post.Id);
            }

            return(this.View(viewModel));
        }
Beispiel #5
0
        public async Task <IActionResult> ByCategory(string name, int page = 1)
        {
            if (!Enum.TryParse(typeof(CategoryOfPost), name, out _))
            {
                return(this.RedirectToAction("All"));
            }

            var enumResult = Enum.Parse <CategoryOfPost>(name);
            var postsCount = await this.postService.GetCountByCategoryAsync(enumResult);

            var pagesCount = (int)Math.Ceiling((double)postsCount / GlobalConstants.ItemsPerPage);

            if (page > pagesCount)
            {
                page = pagesCount;
            }

            if (page <= 0)
            {
                page = 1;
            }

            var posts = await this.postService
                        .GetByCategoryAsync <PostViewModel>(enumResult, GlobalConstants.ItemsPerPage, (page - 1) *GlobalConstants.ItemsPerPage);

            var result = new PostsAllViewModel
            {
                Posts      = posts,
                PagesCount = (int)Math.Ceiling((double)postsCount / GlobalConstants.ItemsPerPage),
            };

            if (result.PagesCount == 0)
            {
                result.PagesCount = 1;
            }

            if (page > result.PagesCount)
            {
                page = result.PagesCount;
            }

            result.CurrentPage = page;
            return(this.View(result));
        }
Beispiel #6
0
        public async Task <IActionResult> MyPosts(int page = 1)
        {
            var user = await this.userManager.GetUserAsync(this.User);

            var userId = await this.userManager.GetUserIdAsync(user);

            var postsCount = await this.postService.GetCountByUserAsync(userId);

            var pagesCount = (int)Math.Ceiling((double)postsCount / GlobalConstants.ItemsPerPage);

            if (page > pagesCount)
            {
                page = pagesCount;
            }

            if (page <= 0)
            {
                page = 1;
            }

            var posts = await this.postService
                        .GetByUserAsync <PostViewModel>(userId, GlobalConstants.ItemsPerPage, (page - 1) *GlobalConstants.ItemsPerPage);

            var result = new PostsAllViewModel
            {
                Posts      = posts,
                PagesCount = (int)Math.Ceiling((double)postsCount / GlobalConstants.ItemsPerPage),
            };

            if (result.PagesCount == 0)
            {
                result.PagesCount = 1;
            }

            if (page > result.PagesCount)
            {
                page = result.PagesCount;
            }

            result.CurrentPage = page;
            return(this.View(result));
        }
Beispiel #7
0
        public async Task <IActionResult> BySearch(string search, int page = 1)
        {
            var postsCount = await this.postService.GetCountBySearchAsync(search);

            var pagesCount = (int)Math.Ceiling((double)postsCount / GlobalConstants.ItemsPerPage);

            if (page > pagesCount)
            {
                page = pagesCount;
            }

            if (page <= 0)
            {
                page = 1;
            }

            var posts = await this.searchBarService
                        .SearchPost <PostViewModel>(search, GlobalConstants.ItemsPerPage, (page - 1) *GlobalConstants.ItemsPerPage);

            var result = new PostsAllViewModel()
            {
                Posts      = posts,
                PagesCount = (int)Math.Ceiling((double)postsCount / GlobalConstants.ItemsPerPage),
            };

            if (result.PagesCount == 0)
            {
                result.PagesCount = 1;
            }

            if (page > result.PagesCount)
            {
                page = result.PagesCount;
            }

            result.CurrentPage = page;
            result.SearchWord  = search;
            return(this.View(result));
        }
Beispiel #8
0
        public async Task <IActionResult> All(int page = 1)
        {
            var postsCount = await this.postService.GetAllCountAsync();

            var pagesCount = (int)Math.Ceiling((double)postsCount / GlobalConstants.ItemsPerPage);

            if (page > pagesCount)
            {
                page = pagesCount;
            }

            if (page <= 0)
            {
                page = 1;
            }

            var posts = await this.postService
                        .GetAllAsync <PostViewModel>(GlobalConstants.ItemsPerPage, (page - 1) *GlobalConstants.ItemsPerPage);

            var result = new PostsAllViewModel()
            {
                Posts      = posts,
                PagesCount = (int)Math.Ceiling((double)postsCount / GlobalConstants.ItemsPerPage),
            };

            if (result.PagesCount == 0)
            {
                result.PagesCount = 1;
            }

            if (page > result.PagesCount)
            {
                page = result.PagesCount;
            }

            result.CurrentPage = page;

            return(this.View(result));
        }