Example #1
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);
        }
Example #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);
        }
Example #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);
        }
Example #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);            
        }
Example #5
0
        public virtual ActionResult Feed(Guid? categoryId, string tagName, string year, string month)
        {
            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);

                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,
                            ImageUrl = x.MainImageUrl,
                            Tags = x.Tags
                        }).ToList();
            }

            //search by year
            if (!string.IsNullOrEmpty(year) && string.IsNullOrEmpty(month))
            {

                var p = new List<BlogItem>();

                foreach (var x in posts)
                {
                    if (x.PublishedOn.Year.ToString() == year)
                    {
                        p.Add(x);
                    }

                }

                return View(p);

            }

            //search by month
            if (!string.IsNullOrEmpty(year) && !string.IsNullOrEmpty(month))
            {

                var m = new List<BlogItem>();
                var y = new List<BlogItem>();

                foreach (var x in posts)
                {
                    if (x.PublishedOn.Year.ToString() == year)
                    {
                        y.Add(x);
                    }

                }

                foreach (var x in y)
                {
                    if (x.PublishedOn.Month.ToString() == month)
                    {
                        m.Add(x);
                    }

                }

                return View(m);

            }
            return View(posts);
        }
Example #6
0
        public virtual ActionResult Feed(string keywordsForSearch)
        {
            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();
            }

            if (!string.IsNullOrEmpty(keywordsForSearch))
            {
                List<BlogItem> searchlist = new List<BlogItem>();

                //search in title
                var v = posts.Where(r => r.Title.Contains(keywordsForSearch)).ToList();
                if (v.Count > 0)
                {
                    foreach (var x in v)
                    {
                        searchlist.Add(x);

                    }
                }

                //search by introtext
                var v1 = posts.Where(r => r.IntroText.Contains(keywordsForSearch)).ToList();
                if (v1.Count > 0)
                {
                    foreach (var x1 in v1)
                    {
                        searchlist.Add(x1);

                    }
                }

                //var v2 = posts.Where(r => r.Url.Contains(keywordsForSearch)).ToList();

                //if(v2.Count >0 ){

                //    foreach (var x2 in v2)
                //    {

                //        searchlist.Add(x2);
                //    }
                //}

                //creating distinct list
                List<string> Distinct_searchlist = new List<string>();
                List<BlogItem> new_distinct_blogitems = new List<BlogItem>();

                foreach (var s in searchlist)
                {
                    if (!Distinct_searchlist.Contains(s.Title))
                    {
                        Distinct_searchlist.Add(s.Title);
                        new_distinct_blogitems.Add(s);

                    }

                }

                return View(new_distinct_blogitems);

            }

            return View(posts);
        }
Example #7
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);
            }
        }
Example #8
0
 private bool TagsListIsReadonly(GetBlogPostsRequest request, GetBlogPostsModel data)
 {
     return(!data.HasColumnInSortBySection("Tags") && !data.HasColumnInWhereSection("Tags"));
 }