Exemple #1
0
        /// <summary>
        /// Returns archive information.
        /// </summary>
        /// <returns></returns>
        public async Task <Dictionary <int, List <MonthItem> > > GetArchivesAsync()
        {
            return(await distributedCache.GetAsync(BlogCache.KEY_ALL_ARCHIVES, BlogCache.Time_Archives, async() =>
            {
                var months = new Dictionary <DateTime, int>();
                var years = new Dictionary <int, List <MonthItem> >();

                var dates = await postRepository.GetPostDateTimesAsync();
                foreach (var month in dates)
                {
                    months.TryGetValue(month, out int count);
                    ++count;
                    months[month] = count;
                }

                foreach (var month in months)
                {
                    int year = month.Key.Year;
                    if (!years.Keys.Contains(year))
                    {
                        years.Add(year, new List <MonthItem>());
                    }

                    years[year].Add(new MonthItem
                    {
                        Title = month.Key.ToString("MMMM"),
                        Url = BlogRoutes.GetArchiveRelativeLink(year, month.Key.Month),
                        Count = month.Value,
                    });
                }

                return years;
            }));
Exemple #2
0
        public void GetArchiveRelativeLink_returns_link_starts_with_slash_and_2digit_month()
        {
            var year         = 2018;
            var month        = 9;
            var relativeLink = BlogRoutes.GetArchiveRelativeLink(year, month);

            Assert.StartsWith("/", relativeLink);
            Assert.Equal("/posts/2018/09", relativeLink);
        }