示例#1
0
        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);
            }
        }
示例#2
0
        //ConcurrentDictionary<ElementCacheKey, Element> entries = new ConcurrentDictionary<ElementCacheKey, Element>(new ElementCacheKeyEqualityComparer());

        public SiteLabelRepository(Site site)
        {
            StoreRepository = new XmlElementRepository(new Label(site).PhysicalPath);
        }