Ejemplo n.º 1
0
        public List <BlogPostYearModel> PrepareBlogPostYearModel()
        {
            var cacheKey    = string.Format(ModelCacheEventConsumer.BLOG_MONTHS_MODEL_KEY, _workContext.WorkingLanguage.Id, _storeContext.CurrentStore.Id);
            var cachedModel = _cacheManager.Get(cacheKey, () =>
            {
                var model = new List <BlogPostYearModel>();

                var blogPosts = _blogService.GetAllBlogPosts(_storeContext.CurrentStore.Id);
                if (blogPosts.Any())
                {
                    var months = new SortedDictionary <DateTime, int>();

                    var blogPost = blogPosts[blogPosts.Count - 1];
                    var first    = blogPost.StartDateUtc ?? blogPost.CreatedOnUtc;
                    while (DateTime.SpecifyKind(first, DateTimeKind.Utc) <= DateTime.UtcNow.AddMonths(1))
                    {
                        var list = blogPosts.GetPostsByDate(new DateTime(first.Year, first.Month, 1), new DateTime(first.Year, first.Month, 1).AddMonths(1).AddSeconds(-1));
                        if (list.Any())
                        {
                            var date = new DateTime(first.Year, first.Month, 1);
                            months.Add(date, list.Count);
                        }

                        first = first.AddMonths(1);
                    }


                    int current = 0;
                    foreach (var kvp in months)
                    {
                        var date          = kvp.Key;
                        var blogPostCount = kvp.Value;
                        if (current == 0)
                        {
                            current = date.Year;
                        }

                        if (date.Year > current || !model.Any())
                        {
                            var yearModel = new BlogPostYearModel
                            {
                                Year = date.Year
                            };
                            model.Insert(0, yearModel);
                        }

                        model.First().Months.Insert(0, new BlogPostMonthModel
                        {
                            Month         = date.Month,
                            BlogPostCount = blogPostCount
                        });

                        current = date.Year;
                    }
                }
                return(model);
            });

            return(cachedModel);
        }
Ejemplo n.º 2
0
        //[OutputCache(Duration = 120, VaryByCustom = "WorkingLanguage")]
        public ActionResult BlogMonths()
        {
            if (!_blogSettings.Enabled)
            {
                return(Content(""));
            }

            var model = new List <BlogPostYearModel>();

            var blogPosts = _blogService.GetAllBlogPosts(_workContext.WorkingLanguage.Id, null, null, 0, int.MaxValue);

            if (blogPosts.Count > 0)
            {
                var months = new SortedDictionary <DateTime, int>();

                var first = blogPosts[blogPosts.Count - 1].CreatedOnUtc;
                while (DateTime.SpecifyKind(first, DateTimeKind.Utc) <= DateTime.UtcNow.AddMonths(1))
                {
                    var list = blogPosts.GetPostsByDate(new DateTime(first.Year, first.Month, 1), new DateTime(first.Year, first.Month, 1).AddMonths(1).AddSeconds(-1));
                    if (list.Count > 0)
                    {
                        var date = new DateTime(first.Year, first.Month, 1);
                        months.Add(date, list.Count);
                    }

                    first = first.AddMonths(1);
                }


                int current = 0;
                foreach (var kvp in months)
                {
                    var date          = kvp.Key;
                    var blogPostCount = kvp.Value;
                    if (current == 0)
                    {
                        current = date.Year;
                    }

                    if (date.Year > current || model.Count == 0)
                    {
                        var yearModel = new BlogPostYearModel()
                        {
                            Year = date.Year
                        };
                        model.Add(yearModel);
                    }

                    model.Last().Months.Add(new BlogPostMonthModel()
                    {
                        Month         = date.Month,
                        BlogPostCount = blogPostCount
                    });

                    current = date.Year;
                }
            }
            return(PartialView(model));
        }
Ejemplo n.º 3
0
        /// <summary>
        /// Prepare blog post year models
        /// </summary>
        /// <returns>List of blog post year model</returns>
        public virtual List <BlogPostYearModel> PrepareBlogPostYearModel()
        {
            var model = new List <BlogPostYearModel>();

            var blogPosts = _blogservice.GetAllBlogPosts(_storeContext.CurrentStore.Id);

            if (blogPosts.Any())
            {
                var months   = new SortedDictionary <DateTime, int>();
                var blogPost = blogPosts[blogPosts.Count - 1];
                var first    = blogPost.StartDateUtc ?? blogPost.CreatedOnUtc;
                while (DateTime.SpecifyKind(first, DateTimeKind.Utc) <= DateTime.UtcNow.AddMonths(1))
                {
                    var list = _blogservice.GetPostsByDate(blogPosts, new DateTime(first.Year, first.Month, 1),
                                                           new DateTime(first.Year, first.Month, 1).AddMonths(1).AddSeconds(-1));
                    if (list.Any())
                    {
                        var date = new DateTime(first.Year, first.Month, 1);
                        months.Add(date, list.Count);
                    }

                    first = first.AddMonths(1);
                }
                var current = 0;
                foreach (var kvp in months)
                {
                    var date          = kvp.Key;
                    var blogPostCount = kvp.Value;
                    if (current == 0)
                    {
                        current = date.Year;
                    }

                    if (date.Year > current || !model.Any())
                    {
                        var yearModel = new BlogPostYearModel
                        {
                            Year = date.Year
                        };
                        model.Insert(0, yearModel);
                    }

                    model.First().Months.Insert(0, new BlogPostMonthModel
                    {
                        Month         = date.Month,
                        BlogPostCount = blogPostCount
                    });

                    current = date.Year;
                }
            }
            return(model);
        }
Ejemplo n.º 4
0
        /// <summary>
        /// Prepare blog post year models
        /// </summary>
        /// <returns>List of blog post year model</returns>
        public virtual async Task <List <BlogPostYearModel> > PrepareBlogPostYearModelAsync()
        {
            var cacheKey    = _staticCacheManager.PrepareKeyForDefaultCache(NopModelCacheDefaults.BlogMonthsModelKey, await _workContext.GetWorkingLanguageAsync(), await _storeContext.GetCurrentStoreAsync());
            var cachedModel = await _staticCacheManager.GetAsync(cacheKey, async() =>
            {
                var model = new List <BlogPostYearModel>();

                var blogPosts = await _blogService.GetAllBlogPostsAsync((await _storeContext.GetCurrentStoreAsync()).Id,
                                                                        (await _workContext.GetWorkingLanguageAsync()).Id);
                if (blogPosts.Any())
                {
                    var months = new SortedDictionary <DateTime, int>();

                    var blogPost = blogPosts[blogPosts.Count - 1];
                    var first    = blogPost.StartDateUtc ?? blogPost.CreatedOnUtc;
                    while (DateTime.SpecifyKind(first, DateTimeKind.Utc) <= DateTime.UtcNow.AddMonths(1))
                    {
                        var list = await _blogService.GetPostsByDateAsync(blogPosts, new DateTime(first.Year, first.Month, 1),
                                                                          new DateTime(first.Year, first.Month, 1).AddMonths(1).AddSeconds(-1));
                        if (list.Any())
                        {
                            var date = new DateTime(first.Year, first.Month, 1);
                            months.Add(date, list.Count);
                        }

                        first = first.AddMonths(1);
                    }

                    var current = 0;
                    foreach (var kvp in months)
                    {
                        var date          = kvp.Key;
                        var blogPostCount = kvp.Value;
                        if (current == 0)
                        {
                            current = date.Year;
                        }

                        if (date.Year > current || !model.Any())
                        {
                            var yearModel = new BlogPostYearModel
                            {
                                Year = date.Year
                            };
                            model.Insert(0, yearModel);
                        }

                        model.First().Months.Insert(0, new BlogPostMonthModel
                        {
                            Month         = date.Month,
                            BlogPostCount = blogPostCount
                        });

                        current = date.Year;
                    }
                }

                return(model);
            });

            return(cachedModel);
        }
Ejemplo n.º 5
0
        public ActionResult BlogMonths()
        {
            if (!_blogSettings.Enabled)
            {
                return(Content(""));
            }

            var storeId           = _services.StoreContext.CurrentStore.Id;
            var workingLanguageId = _services.WorkContext.WorkingLanguage.Id;
            var cacheKey          = string.Format(ModelCacheEventConsumer.BLOG_MONTHS_MODEL_KEY, workingLanguageId, storeId);
            var cachedModel       = _cacheManager.Get(cacheKey, () =>
            {
                var model     = new List <BlogPostYearModel>();
                var blogPosts = _blogService.GetAllBlogPosts(storeId, workingLanguageId, null, null, 0, int.MaxValue);

                if (blogPosts.Count > 0)
                {
                    var months = new SortedDictionary <DateTime, int>();

                    var first = blogPosts[blogPosts.Count - 1].CreatedOnUtc;
                    while (DateTime.SpecifyKind(first, DateTimeKind.Utc) <= DateTime.UtcNow.AddMonths(1))
                    {
                        var list = blogPosts.GetPostsByDate(new DateTime(first.Year, first.Month, 1), new DateTime(first.Year, first.Month, 1).AddMonths(1).AddSeconds(-1));
                        if (list.Count > 0)
                        {
                            var date = new DateTime(first.Year, first.Month, 1);
                            months.Add(date, list.Count);
                        }

                        first = first.AddMonths(1);
                    }

                    int current = 0;
                    foreach (var kvp in months.Reverse())
                    {
                        var date          = kvp.Key;
                        var blogPostCount = kvp.Value;
                        if (current == 0)
                        {
                            current = date.Year;
                        }

                        if (date.Year < current || model.Count == 0)
                        {
                            var yearModel = new BlogPostYearModel()
                            {
                                Year = date.Year
                            };
                            model.Add(yearModel);
                        }

                        model.Last().Months.Add(new BlogPostMonthModel()
                        {
                            Month         = date.Month,
                            BlogPostCount = blogPostCount
                        });

                        current = date.Year;
                    }
                }
                return(model);
            });

            return(PartialView(cachedModel));
        }