Esempio n. 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);
            }
        }
Esempio n. 2
0
 public static IElementRepository GetElementRepository(Site site)
 {
     var repository = site.ObjectCache().Get(cacheKey);
     if (repository == null)
     {
         repository = new CacheElementRepository(() => EngineContext.Current.Resolve<IElementRepositoryFactory>().CreateRepository(site));
         site.ObjectCache().Add(cacheKey, repository, new System.Runtime.Caching.CacheItemPolicy()
         {
             SlidingExpiration = TimeSpan.Parse("00:30:00")
         });
     }
     return (IElementRepository)repository;
 }