Ejemplo n.º 1
0
        /// <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);
        }