protected void RegisterViewsAndServices() { _container.RegisterType <IAppConfigEntityFactory, AppConfigEntityFactory>(new ContainerControlledLifetimeManager()); _container.RegisterType <IAppConfigRepository, DSAppConfigClient>(); var loginViewModel = _container.Resolve <ILoginViewModel>(); var baseUrlHash = loginViewModel.CurrentUser.BaseUrl.ToLower().GetHashCode().ToString(); var repositoryFactory = _container.Resolve <IRepositoryFactory <IAppConfigRepository> >(); var localElements = new XmlElementRepository(Path.Combine(Path.GetTempPath(), "VirtoCommerceCMLocalization", baseUrlHash)); var cachedElements = new CacheElementRepository(localElements); var _elementRepository = new CachedDatabaseElementRepository(repositoryFactory, cachedElements, GetDefaultFilter()); _container.RegisterInstance <IElementRepository>(_elementRepository); // check cache date and update if needed var repository = _container.Resolve <IAppConfigRepository>(); var lastItem = repository.Localizations.OrderByDescending(x => x.LastModified).Take(1).FirstOrDefault(); DateTime?dbDate = lastItem == null ? null : lastItem.LastModified; var cacheDate = _elementRepository.GetStatusDate(); if (dbDate.HasValue && dbDate > cacheDate) { _elementRepository.Clear(); // force Elements re-caching _elementRepository.Elements(); _elementRepository.SetStatusDate(dbDate.Value); } }
//ConcurrentDictionary<ElementCacheKey, Element> entries = new ConcurrentDictionary<ElementCacheKey, Element>(new ElementCacheKeyEqualityComparer()); public SiteLabelRepository(Site site) { StoreRepository = new XmlElementRepository(new Label(site).PhysicalPath); }