/// <summary> /// Get trending today data from cache. Initialize if needed. /// </summary> /// <returns></returns> private List <Answer> GetTodayTrendingCachedData() { object data = _cacheManager.Get(CacheConstants.CACHE_KEY_TRENDING_TODAY_DATA); if (data == null) { var trendingToday = _repository.FindAnswersTrendingToday(TRENDING_TOP_TODAY, DateTime.Now).ToList <Answer>(); // If not enough get the rest from Overall Totals if (trendingToday.Count < TRENDING_TOP_TODAY) { // Yes we do not want to go from cache here because we need more items var trendingOverall = _repository.FindAnswersTrendingOverall(TRENDING_TOP_TODAY).ToList <Answer>(); var trendingTodayCount = trendingToday.Count; // we are going to skip the ones that are already there var added = 0; for (var i = 0; added < TRENDING_TOP_TODAY - trendingTodayCount && i < trendingOverall.Count; i++) { // is it already there? if (trendingToday.Count(x => x.Id == trendingOverall[i].Id) == 0) { trendingToday.Add(trendingOverall[i]); added++; } } } _cacheManager.Add(CacheConstants.CACHE_KEY_TRENDING_TODAY_DATA, trendingToday); return(trendingToday); } return((List <Answer>)data); }