public async Task <IActionResult> UsersPool(int page = 1, string nameToSearch = "", UserQueryFilters.DegreesOfPopularity popularity = UserQueryFilters.DegreesOfPopularity.Any, UserQueryFilters.ArticleCounts articleCount = UserQueryFilters.ArticleCounts.Any) { var query = _usersRepository.GetPublicPool(GetCurrentUserId()); var count = await query.CountAsync(); var paginationModel = new PaginationViewModel("Feed", "MyArticles", count, page); try { paginationModel.Validate(page); } catch (PaginationOutOfRangeException ex) { page = ex.Negative ? 1 : paginationModel.TotalPages; return(RedirectToAction("UsersPool", new { Page = page })); } var filters = new UserQueryFilters() { NameToSearch = nameToSearch, Popularity = popularity, ArticleCount = articleCount }; query = filters.BuildQuery(query); var users = await paginationModel.GetQuery(query) .ToListAsync(); var model = new UsersPoolViewModel(paginationModel, users, filters); return(View(model)); }
public UsersPoolViewModel(PaginationViewModel pagination, IEnumerable <User> users, UserQueryFilters filters) { Pagination = pagination; Users = users; Filters = filters; }