public async Task <PagedList <Post> > GetPosts(GetPostsParams postsParams) { var posts = await database.PostRepository.Fetch(); if (postsParams.CategoryId != null) { posts = posts.Where(p => p.CategoryId == postsParams.CategoryId); } if (postsParams.Username != null) { posts = posts.Where(p => p.Username.ToLower().Contains(postsParams.Username.ToLower())); } if (postsParams.Title != null) { posts = posts.Where(p => p.Title.ToLower().Contains(postsParams.Title.ToLower())); } switch (postsParams.SortType) { case Enums.PostSortType.UpdatedAscending: posts = posts.OrderBy(p => p.DateUpdated); break; case Enums.PostSortType.UpdatedDescending: posts = posts.OrderByDescending(p => p.DateUpdated); break; default: break; } return(posts.ToPagedList <Post>(postsParams.PageNumber, postsParams.PageSize)); }
public async Task <IActionResult> Details(CategoryViewModel viewModel, [FromQuery] int pageNumber = 1) { return(View(viewModel.FilterPosts(await postService.GetPosts(GetPostsParams.Create ( viewModel.TitleFilter, viewModel.Id, viewModel.Username, viewModel.SortType ).CurrentPage(pageNumber) as GetPostsParams), viewModel.Name))); }