Beispiel #1
0
        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);
            }
        }
Beispiel #2
0
        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));
        }
Beispiel #3
0
        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));
        }
Beispiel #4
0
        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));
        }
Beispiel #5
0
        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));
        }