Ejemplo n.º 1
0
        public IEnumerable <Blog> LoadBlogs(BlogFilter filter = null)
        {
            blogsCount = CountBlogs();
            if (blogsCount == 0)
            {
                return(null);
            }

            if (filter == null)
            {
                return(dbContext.Blogs);
            }

            if (filter.CurrentPage != null)
            {
                var query = dbContext.Blogs
                            .OrderByDescending(blog => blog.Id)
                            .Skip(filter.BlogsPerPage * (int)(filter.CurrentPage - 1))
                            .Take(filter.BlogsPerPage);
                return(query);
            }
            else
            {
                var query = dbContext.Blogs
                            .OrderByDescending(blog => blog.Id)
                            .Take(filter.BlogsPerPage);
                return(query);
            }
        }
Ejemplo n.º 2
0
        public IActionResult Index(int?page = null)
        {
            var filter = new BlogFilter {
                BlogsPerPage = blogsPerPage
            };

            if (numberOfPages == 0)
            {
                numberOfPages = CountNumberOfPages();
            }

            if (page == null)
            {
                var blogs     = blogService.LoadBlogs(filter);
                var viewModel = new BlogsViewModel()
                {
                    Blogs = blogs.ToList(), CurrentPage = 1, NumberOfPages = numberOfPages
                };
                return(View(viewModel));
            }
            else
            {
                filter.CurrentPage = page;
                var blogs     = blogService.LoadBlogs(filter);
                var viewModel = new BlogsViewModel()
                {
                    Blogs = blogs.ToList(), CurrentPage = (int)page, NumberOfPages = numberOfPages
                };
                return(View(viewModel));
            }
        }
Ejemplo n.º 3
0
        /// <summary>
        /// пример - получение кол-ва блогов учитывая фильтр
        /// </summary>
        public int GetBlogCount(BlogFilter filter)
        {
            var query = new GetCountQuery <Blog>(_db)
            {
                Spec = filter
            };

            return(query.GetResult());
        }
Ejemplo n.º 4
0
        static void Main(string[] args)
        {
            // блоги с фильтром
            Console.WriteLine();
            Console.WriteLine($"Все блоги от авторов с именем Ni* с кол-вом постов > 30 :");
            var blogSvc = new BlogService();
            var filter  = new BlogFilter()
            {
                UserName             = "******",
                PostCountGreaterThen = 20
            };

            var blogs = blogSvc.GetBlogList(filter);

            PrintBlogs(blogs);

            Console.WriteLine();
            Console.WriteLine($"Блоги в которых были посты за последнюю неделю :");
            filter = new BlogFilter()
            {
                HasPostLaterThen = DateTime.Now.AddDays(-7)
            };

            var count = blogSvc.GetBlogCount(filter);

            Console.WriteLine($"Количество : {count}");

            // посты с фильтром и сортироовкой
            var postSvc = new PostService();

            Console.WriteLine();
            Console.WriteLine($"Все посты в блоге №1, с 2015, сортировка по дате: ");
            var postFilter = new PostFilter()
            {
                BlogId            = 1,
                PostDateLaterThen = new DateTime(2015, 1, 1)
            };

            var posts = postSvc.GetBlogPosts(postFilter);

            PrintPosts(posts);

            // получение статистики по блогам кастомным запросом
            Console.WriteLine();
            Console.WriteLine("Статистика по постам #1,2,3:");
            var stastFilter = new List <int>()
            {
                1, 2, 3
            };
            var stats = blogSvc.GetBlogStats(stastFilter)
                        .GetAwaiter().GetResult();

            PrintStats(stats);

            Console.ReadKey();
        }
        public IActionResult Index(BlogFilter filter = null)
        {
            var blogs = _blogRepo.getQueryable().Where(a => a.is_enabled == true);

            ViewBag.pagerInfo = _paginatedMetaService.GetMetaData(blogs.Count(), filter.page, 5);

            blogs = blogs.Skip(filter.number_of_rows * (filter.page - 1)).Take(filter.number_of_rows);

            return(View(blogs.ToList()));
        }
Ejemplo n.º 6
0
        /// <summary>
        /// пример - получение списка блогов по фильтру
        /// </summary>
        public List <Blog> GetBlogList(BlogFilter filter)
        {
            var query = new GetListQuery <Blog>(_db)
            {
                Spec = new QuerySpec <Blog>()
                {
                    Join   = new BlogListJoinSpec(),
                    Paging = new QueryPaging(50, 0),
                    Filter = filter,
                }
            };

            return(query.GetResult());
        }
Ejemplo n.º 7
0
 /// <summary>
 /// Return list of object when call by liquid code in view: "{% for object in objects %}".
 /// Example: "{% for collection in collections %}".
 /// </summary>
 /// <returns></returns>
 public IEnumerator GetEnumerator()
 {
     if (!_loadedModel.ContainsKey("blogs"))
     {
         var blogFilter = new BlogFilter
         {
             Limit = 10,
             Page  = 1
         };
         var blogs      = blogService.Filter(blogFilter);
         var blogModels = Mapper.Map <List <BlogModel> >(blogs);
         _loadedModel.Add("blogs", blogModels);
         return(blogModels.GetEnumerator());
     }
     return(((List <ProductModel>)_loadedModel["blogs"]).GetEnumerator());
 }
Ejemplo n.º 8
0
        public ActionResult ManageSettings(AppSettingsModel appsettings)
        {
            var filter = new BlogFilter(_db);

            if (appsettings.HarmonySettings == null)
            {
                appsettings.HarmonySettings = new HarmonySettingsModel();
            }
            filter.Blacklisttags       = appsettings.HarmonySettings.BlacklistTags;
            filter.Whitelistcategories = appsettings.HarmonySettings.WhitelistCategories;
            filter.Whitelistids        = appsettings.HarmonySettings.WhitelistIds;
            filter.UpdateDatabase();

            string result = Newtonsoft.Json.JsonConvert.SerializeObject(new { ApplicationSettings = appsettings }, Newtonsoft.Json.Formatting.Indented);
            string path   = Path.Combine(_env.ContentRootPath, "appsettings.override.json");

            System.IO.File.WriteAllText(path, result);
            CopyValues(_appSettings, appsettings);
            TriggerSettingsChanged(_appSettings);
            return(RedirectToAction("Manage", new { context = "Parameter" }));
        }
Ejemplo n.º 9
0
        public List <Blog> Filter(BlogFilter filter)
        {
            try
            {
                var products = new List <Blog>();

                var request = new RestRequest("/blogs", Method.GET);
                request.AddParameter("name", filter.Name);
                request.AddParameter("page", filter.Page);
                request.AddParameter("limit", filter.Limit);
                var response = ApiClient.Execute <BlogsResponse>(request);
                if (response.StatusCode == HttpStatusCode.OK)
                {
                    products = response.Data.Blogs;
                    return(products);
                }
            }
            catch
            {
            }
            return(null);
        }
Ejemplo n.º 10
0
        public IActionResult Index(BlogFilter filter = null)
        {
            try
            {
                var blogs = _blogRepository.getQueryable();
                if (!string.IsNullOrWhiteSpace(filter.title))
                {
                    blogs = blogs.Where(a => a.title.Contains(filter.title));
                }
                ViewBag.pagerInfo = _paginatedMetaService.GetMetaData(blogs.Count(), filter.page, filter.number_of_rows);
                blogs             = blogs.Skip(filter.number_of_rows * (filter.page - 1)).Take(filter.number_of_rows);

                var blogsDetails = blogs.ToList();

                var blogIndexVM = getViewModelFrom(blogsDetails);
                return(View(blogIndexVM));
            }
            catch (Exception ex)
            {
                AlertHelper.setMessage(this, ex.Message, messageType.error);
                return(Redirect("/admin"));
            }
        }
Ejemplo n.º 11
0
        private BlogListModel GetBlogEntries(string user, string date, bool getIsPublishedOnly, int defaultPageSize)
        {
            using (profiler.Step("BlogController.GetBlogEntries"))
            {
                var viewData = new BlogListModel();
                var blogFilter = new BlogFilter();

                var theUser = UserRepository.Load(user);
                if (theUser == null)
                {
                    var family = FamilyRepository.Load(user);
                    if (family == null)
                    {
                        return null;
                    }
                    else
                    {
                        blogFilter.AuthorName = user;
                        blogFilter.LoadBlogBy = LoadBlogBy.Family;
                        viewData.Author.FirstName = family.Description;
                    }
                }
                else
                {
                    blogFilter.AuthorName = theUser.UniqueKey;
                    blogFilter.LoadBlogBy = LoadBlogBy.User;
                    viewData.Author.FirstName = theUser.FirstName;
                }

                viewData.Author.UrlName = user;

                if (!string.IsNullOrEmpty(date))
                    blogFilter.Date = date;
                if (getIsPublishedOnly)
                    blogFilter.IsPublished = true;

                ICacheKey cacheKey = new BlogListCacheKey();
                viewData.BlogTitles = Cache.Get<IDictionary<string, IDictionary<string, IEnumerable<IBlog>>>>(cacheKey.GenerateKey(string.Format("SidebarList:{0}", blogFilter.AuthorName)), () =>
                                GenerateBlogTitles(BlogRepository
                                    .LoadList(blogFilter)
                                    .BlogEntries
                                    .OrderByDescending(b => b.DatePublished)));

                int pageSize = 10;
                if (Int32.TryParse(QueryValue("pageSize"), out pageSize))
                    blogFilter.PageSize = pageSize;
                else
                    blogFilter.PageSize = defaultPageSize;

                int pageIndex = 1;
                if (Int32.TryParse(QueryValue("page"), out pageIndex))
                    blogFilter.PageIndex = pageIndex;
                else
                    blogFilter.PageIndex = 1;

                var model = BlogRepository.LoadList(blogFilter);
                viewData.BlogEntries = model.BlogEntries.OrderByDescending(b => b.DatePublished);
                viewData.PageCount = model.PageCount;
                viewData.PageIndex = model.PageIndex;

                return viewData;
            }
        }
Ejemplo n.º 12
0
        public IBlogList LoadList(BlogFilter filter)
        {
            using (MiniProfiler.Current.Step("BlogRepository.LoadList"))
            {
                EnsureInjectables();

                BlogList model = new BlogList();

                using (var dc = DataContextFactory.GetDataContext())
                {
                    IEnumerable<IBlog> blogs = dc.Repository<Blog>()
                                                .AsEnumerable()
                                                .Cast<IBlog>();

                    if (filter.LoadBlogBy == LoadBlogBy.User)
                    {
                        blogs = LoadByUser(blogs, filter.AuthorName);
                    }
                    else if (filter.LoadBlogBy == LoadBlogBy.Family)
                    {
                        blogs = LoadByFamily(blogs, filter.AuthorName, dc);
                    }

                    if (!String.IsNullOrEmpty(filter.Date))
                    {
                        blogs = LoadByDate(blogs, filter.Date);
                    }

                    if (!String.IsNullOrEmpty(filter.Tags))
                    {
                        blogs = LoadByTags(blogs, filter.Tags);
                    }

                    if (filter.IsPublished.HasValue)
                    {
                        blogs = blogs.Where(b => b.IsPublished == filter.IsPublished.Value);
                        blogs = blogs.Where(b => b.DatePublished.Value <= DateTime.Now);
                    }

                    blogs = blogs.OrderByDescending(b => b.DatePublished);

                    using (MiniProfiler.Current.Step("BlogRepository.LoadList.Paging"))
                    {
                        if (filter.PageSize.HasValue)
                        {
                            int count = Cache.Get<int>(new BlogListCountCacheKey().GenerateKey(filter.AuthorName), () => blogs.Count());
                            decimal pagesDecimal = (decimal)count / (decimal)filter.PageSize.Value;
                            if (pagesDecimal % 1  > 0) pagesDecimal += 0.5M;
                            int pages = Convert.ToInt32(Math.Round(pagesDecimal, 0, MidpointRounding.AwayFromZero));

                            int pageIndex = filter.PageIndex.HasValue ? filter.PageIndex.Value - 1 : 0;
                            if (pageIndex > pages)
                                pageIndex = 0;

                            var skip = pageIndex * filter.PageSize.Value;
                            model.PageIndex = pageIndex + 1;

                            model.PageCount = pages;
                            blogs = blogs.Skip(skip).Take(filter.PageSize.Value);
                        }
                    }

                    model.BlogEntries = blogs.ToList();

                    return model;
                }
            }
        }