private void SortAndFilterRequest(GetBlogPostsModel request) { var tagName = Request.QueryString["blogtag"]; var categoryName = Request.QueryString["blogcategory"]; var orFilter = new DataFilter(FilterConnector.Or); orFilter.Add("ExpirationDate", null); orFilter.Add("ExpirationDate", DateTime.Today, FilterOperation.GreaterOrEqual); request.Order.By.Add(new OrderItem("ActivationDate", OrderDirection.Desc)); request.Order.By.Add(new OrderItem("Id")); request.Filter.Add("ActivationDate", DateTime.Today, FilterOperation.LessOrEqual); request.Filter.Inner.Add(orFilter); if (!string.IsNullOrEmpty(categoryName)) { request.FilterByCategoriesNames.Add(categoryName); } if (!string.IsNullOrEmpty(tagName)) { request.FilterByTags.Add(tagName); } }
public ActionResult BlogPosts(RenderWidgetViewModel model) { IList <BlogItem> posts; var isPagingEnabled = model.GetOptionValue <bool>("ShowPager"); var pageSize = model.GetOptionValue <int>("PageSize"); var page = Request.QueryString["blogpage"].ToIntOrDefault(); int postsCount; using (var api = ApiFactory.Create()) { var request = new GetBlogPostsModel { Take = pageSize, IncludeTags = true, IncludeCategories = true }; SortAndFilterRequest(request); if (isPagingEnabled) { var skipCount = page == 0 ? 0 : (page - 1) * pageSize; request.Skip = skipCount; } request.Take = pageSize; var pages = api.Blog.BlogPosts.Get(new GetBlogPostsRequest { Data = request }); posts = pages.Data.Items.Select( x => new BlogItem { IntroText = x.IntroText, PublishedOn = x.ActivationDate, Title = x.Title, Url = x.BlogPostUrl, Author = x.AuthorName, Tags = x.Tags, Categories = x.Categories }).ToList(); postsCount = pages.Data.TotalCount; } var items = new BlogItemsModel { Items = posts, ShowAuthor = model.GetOptionValue <bool>("ShowAuthor"), ShowDate = model.GetOptionValue <bool>("ShowDate"), ShowCategories = model.GetOptionValue <bool>("ShowCategories"), ShowTags = model.GetOptionValue <bool>("ShowTags"), ShowPager = isPagingEnabled, NumberOfPages = (int)Math.Ceiling((double)postsCount / pageSize), CurrentPage = page > 0 ? page : 1 }; return(View(items)); }
public virtual ActionResult Index(Guid?categoryId, string tagName) { IList <BlogItem> posts; using (var api = ApiFactory.Create()) { var request = new GetBlogPostsModel { Take = 10, IncludeTags = true }; var orFilter = new DataFilter(FilterConnector.Or); orFilter.Add("ExpirationDate", null); orFilter.Add("ExpirationDate", DateTime.Today, FilterOperation.GreaterOrEqual); request.Order.By.Add(new OrderItem("ActivationDate", OrderDirection.Desc)); request.Order.By.Add(new OrderItem("Id")); request.Filter.Add("ActivationDate", DateTime.Today, FilterOperation.LessOrEqual); request.Filter.Inner.Add(orFilter); if (categoryId.HasValue) { request.FilterByCategories = new List <Guid> { categoryId.Value }; } if (!string.IsNullOrEmpty(tagName)) { request.FilterByTags.Add(tagName); } var pages = api.Blog.BlogPosts.Get(new GetBlogPostsRequest { Data = request }); posts = pages.Data.Items.Select( x => new BlogItem { IntroText = x.IntroText, PublishedOn = x.ActivationDate, Title = x.Title, Url = x.BlogPostUrl, Author = x.AuthorName, Tags = x.Tags }).ToList(); } return(View(posts)); }
public virtual ActionResult Last() { BlogItem post = null; using (var api = ApiFactory.Create()) { var requestLatestNewsModel = new GetBlogPostsModel { Take = 1, IncludeTags = true }; var orFilter = new DataFilter(FilterConnector.Or); orFilter.Add("ExpirationDate", null); orFilter.Add("ExpirationDate", DateTime.Today, FilterOperation.GreaterOrEqual); requestLatestNewsModel.Order.By.Add(new OrderItem("ActivationDate", OrderDirection.Desc)); requestLatestNewsModel.Order.By.Add(new OrderItem("Id")); requestLatestNewsModel.Filter.Add("ActivationDate", DateTime.Today, FilterOperation.LessOrEqual); requestLatestNewsModel.Filter.Inner.Add(orFilter); var request = new GetBlogPostsRequest { Data = requestLatestNewsModel }; var pages = api.Blog.BlogPosts.Get(request); post = pages.Data.Items.Select( x => new BlogItem { IntroText = x.IntroText, PublishedOn = x.ActivationDate, Title = x.Title, Url = x.BlogPostUrl, Author = x.AuthorName, Tags = x.Tags }).SingleOrDefault(); } return(View(post)); }
public virtual ActionResult Feed() { IList <BlogItem> posts; using (var api = ApiFactory.Create()) { var request = new GetBlogPostsModel { Take = 10, IncludeTags = true }; var orFilter = new DataFilter(FilterConnector.Or); orFilter.Add("ExpirationDate", null); orFilter.Add("ExpirationDate", DateTime.Today, FilterOperation.GreaterOrEqual); request.Order.By.Add(new OrderItem("ActivationDate", OrderDirection.Desc)); request.Order.By.Add(new OrderItem("Id")); request.Filter.Add("ActivationDate", DateTime.Today, FilterOperation.LessOrEqual); var pages = api.Blog.BlogPosts.Get(new GetBlogPostsRequest { Data = request }); posts = pages.Data.Items.Select( x => new BlogItem { IntroText = x.IntroText, PublishedOn = x.ActivationDate, Title = x.Title, Url = x.BlogPostUrl, Author = x.AuthorName, ImageUrl = x.MainImageUrl, Tags = x.Tags }).ToList(); } return(View(posts)); }