public ActionResult Frontpage(PostsSortBy? sort, TimeFilter? time, int? pageNumber, int? pageSize) { var subs = _contextService.GetSubscribedSubIds(); if (sort == null) sort = PostsSortBy.Hot; if (time == null) time = TimeFilter.All; if (pageNumber == null || pageNumber < 1) pageNumber = 1; if (pageSize == null) pageSize = 25; if (pageSize > 100) pageSize = 100; if (pageSize < 1) pageSize = 1; var postIds = _postDao.GetPosts(subs, sort.Value, time.Value, true /*hide removed posts TODO: only hide if not post admin*/, ((pageNumber - 1) * pageSize), pageSize); var model = new SubPostsModel(); model.SortBy = sort.Value; model.TimeFilter = time; if (subs.Any()) // maybe the user hasn't subscribed to any subs? model.Posts = new PagedList<PostWrapped>(_postWrapper.Wrap(postIds, _userContext.CurrentUser), pageNumber.Value, pageSize.Value, postIds.HasMore); return View("Posts", model); }
public ActionResult Posts(string name, PostsSortBy? sort, TimeFilter? time, int? pageNumber, int? pageSize) { if (string.IsNullOrEmpty(name)) return Redirect(Url.Subs()); var subs = new List<Guid>(); Sub sub = null; if (name.Equals("all", StringComparison.InvariantCultureIgnoreCase)) { // TODO: Filter only by subs that want to be including in "all". For now, we will do nothing, which will effectively return all posts. } else { // the user wants to view a specific sub sub = _subDao.GetSubByName(name); if (sub == null) return Redirect(Url.Subs(name)); if(_userContext.CurrentUser != null) _subActivityDao.MarkSubActive(_userContext.CurrentUser.Id, sub.Id); subs.Add(sub.Id); } if (sort == null) sort = PostsSortBy.Hot; // TODO: get default from sub if (time == null) time = TimeFilter.All; if (pageNumber == null || pageNumber < 1) pageNumber = 1; if (pageSize == null) pageSize = 25; if (pageSize > 100) pageSize = 100; if (pageSize < 1) pageSize = 1; var postIds = _postDao.GetPosts(subs, sort.Value, time.Value, true /*hide removed posts TODO: only hide if not post admin*/, ((pageNumber - 1) * pageSize), pageSize); var model = new SubPostsModel(); model.Sub = sub != null ? _subWrapper.Wrap(sub.Id, _userContext.CurrentUser) : null; model.SortBy = sort.Value; model.TimeFilter = time; model.Posts = new PagedList<PostWrapped>(_postWrapper.Wrap(postIds, _userContext.CurrentUser), pageNumber.Value, pageSize.Value, postIds.HasMore); return View(model); }
public ActionResult Unmoderated(string subName) { if (string.IsNullOrEmpty(subName)) throw new NotFoundException(); var sub = _subDao.GetSubByName(subName); if (sub == null) throw new NotFoundException(); var postIds = _postDao.GetUnmoderatedPosts(new List<Guid> { sub.Id }, take: 30); var model = new SubPostsModel(); model.Sub = _subWrapper.Wrap(sub.Id, _userContext.CurrentUser); model.SortBy = PostsSortBy.New; model.Posts = new PagedList<PostWrapped>(_postWrapper.Wrap(postIds, _userContext.CurrentUser), 0, 30, postIds.HasMore); return View(model); }