public TagViewModel Index(TagSetupViewModel inModel) { if (inModel.Tag.IsEmpty()) return new TagViewModel(); var tag = _repository.Query<Tag>().Where(p => p.Name == inModel.Tag).FirstOrDefault(); // TODO: Currently tags are not unique if (tag == null) return new TagViewModel(); const int pageSizeToShow = 15; const int pageSizeToGet = 18; if (inModel.Page == 0) inModel.Page = 1; var posts = (inModel.Page == 1) ? _repository.Query<Post>().OrderByDescending(p => p.Published).ToList().Where(p => p.GetTags().Contains(tag)).Take(pageSizeToGet).ToList() : _repository.Query<Post>().OrderByDescending(p => p.Published).ToList().Where(p => p.GetTags().Contains(tag)).Skip(pageSizeToShow * (inModel.Page - 1)).Take(pageSizeToGet).ToList(); bool showPreviousPageLink = !(inModel.Page == 1); bool showNextPageLink = posts.Count() == pageSizeToGet; var pageSize = showNextPageLink ? pageSizeToShow : pageSizeToGet; return new TagViewModel { Tag = tag, Posts = posts.ToList().Take(pageSize).Select(p => new TagPostDisplay(p)), SiteName = "{0} - Opinionated, let me tell you about it".ToFormat(inModel.SiteName), ShowNextPageLink = showNextPageLink, ShowPreviousPageLink = showPreviousPageLink, NextPage = inModel.Page + 1, PreviousPage = inModel.Page - 1, ShowBothLinks = showNextPageLink && showPreviousPageLink, }; }
public TagViewModel Index(TagSetupViewModel inModel) { if (inModel.Tag.IsEmpty()) { return(new TagViewModel()); } var tag = _repository.Query <Tag>().Where(p => p.Name == inModel.Tag).FirstOrDefault(); // TODO: Currently tags are not unique if (tag == null) { return(new TagViewModel()); } const int pageSizeToShow = 15; const int pageSizeToGet = 18; if (inModel.Page == 0) { inModel.Page = 1; } var posts = (inModel.Page == 1) ? _repository.Query <Post>().OrderByDescending(p => p.Published).ToList().Where(p => p.GetTags().Contains(tag)).Take(pageSizeToGet).ToList() : _repository.Query <Post>().OrderByDescending(p => p.Published).ToList().Where(p => p.GetTags().Contains(tag)).Skip(pageSizeToShow * (inModel.Page - 1)).Take(pageSizeToGet).ToList(); bool showPreviousPageLink = !(inModel.Page == 1); bool showNextPageLink = posts.Count() == pageSizeToGet; var pageSize = showNextPageLink ? pageSizeToShow : pageSizeToGet; return(new TagViewModel { Tag = tag, Posts = posts.ToList().Take(pageSize).Select(p => new TagPostDisplay(p)), SiteName = "{0} - Opinionated, let me tell you about it".ToFormat(inModel.SiteName), ShowNextPageLink = showNextPageLink, ShowPreviousPageLink = showPreviousPageLink, NextPage = inModel.Page + 1, PreviousPage = inModel.Page - 1, ShowBothLinks = showNextPageLink && showPreviousPageLink, }); }