// Update categories stats private void SaveCategoryStats() { var unitOfWorkAsync = _container.Resolve <IUnitOfWorkAsync>(); var categoryCountDctionary = ListingService.GetCategoryCount(); foreach (var item in categoryCountDctionary) { var categoryStatQuery = CategoryStatService.Query(x => x.CategoryID == item.Key.ID).Select(); var categoryStat = categoryStatQuery.FirstOrDefault(); if (categoryStat != null) { categoryStat.Count = item.Value; categoryStat.ObjectState = Repository.Pattern.Infrastructure.ObjectState.Modified; } else { CategoryStatService.Insert(new CategoryStat() { CategoryID = item.Key.ID, Count = item.Value, ObjectState = Repository.Pattern.Infrastructure.ObjectState.Added }); } } unitOfWorkAsync.SaveChanges(); }
public object GetCachedItem(CacheKeys CacheKeyName) { lock (_lock) { if (!MainCache.Contains(CacheKeyName.ToString())) { switch (CacheKeyName) { case CacheKeys.Settings: var setting = SettingService.Queryable().FirstOrDefault(); UpdateCache(CacheKeys.Settings, setting); break; case CacheKeys.SettingDictionary: var settingDictionary = SettingDictionaryService.Queryable().ToList(); UpdateCache(CacheKeys.SettingDictionary, settingDictionary); break; case CacheKeys.Categories: var categories = CategoryService.Queryable().Where(x => x.Enabled).OrderBy(x => x.Ordering).ToList(); UpdateCache(CacheKeys.Categories, categories); break; case CacheKeys.ListingTypes: var ListingTypes = ListingTypeService.Query().Include(x => x.CategoryListingTypes).Select().ToList(); UpdateCache(CacheKeys.ListingTypes, ListingTypes); break; case CacheKeys.ContentPages: var contentPages = ContentPageService.Queryable().Where(x => x.Published).OrderBy(x => x.Ordering).ToList(); UpdateCache(CacheKeys.ContentPages, contentPages); break; case CacheKeys.EmailTemplates: var emailTemplates = EmailTemplateService.Queryable().ToList(); UpdateCache(CacheKeys.EmailTemplates, emailTemplates); break; case CacheKeys.Statistics: SaveCategoryStats(); var statistics = new Statistics(); statistics.CategoryStats = CategoryStatService.Query().Include(x => x.Category).Select().ToList(); statistics.ListingCount = ListingService.Queryable().Count(); statistics.UserCount = AspNetUserService.Queryable().Count(); statistics.OrderCount = OrderService.Queryable().Count(); statistics.TransactionCount = 0; statistics.ItemsCountDictionary = ListingService.GetItemsCount(DateTime.Now.AddDays(-10)); UpdateCache(CacheKeys.Statistics, statistics); break; default: break; } } ; return(MainCache[CacheKeyName.ToString()] as Object); } }