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); }
//[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)); }
/// <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); }
/// <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); }
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)); }