public async Task <string> GetContentAncestorsPath(int?contentId, bool includeCurrentPage = false) { var cacheResult = await EZmsInMemoryCache.GetOrCreateAsync( $"NavigationService:GetContentAncestorsPath:{contentId}:{includeCurrentPage}", async entry => { entry.SetSlidingExpiration(TimeSpan.FromSeconds(60)).SetPriority(CacheItemPriority.Normal); if (!contentId.HasValue) { return(string.Empty); } var content = await _contentRepository.GetContent(contentId); if (content?.ParentId == null) { return(content == null ? "" : content.UrlSlug); } var ancestors = await GetContentAncestors(contentId.Value, includeCurrentPage); var ancestorPath = string.Join("/", ancestors.Where(w => !string.IsNullOrEmpty(w.UrlSlug)).Select(w => w.UrlSlug)) .Trim() .Trim('/') .ToLower(); return(ancestorPath); }); return(cacheResult); }
public override async Task <IEnumerable <T> > GetChildren <T>(int id) { return(await EZmsInMemoryCache.GetOrCreateAsync($"DefaultContentLoader:GetChildren<IEnumerable<{typeof(T).FullName}>>({id})", async entry => { entry.SetSlidingExpiration(TimeSpan.FromSeconds(10)); var childrenOfType = (await _repository.GetChildren <T>(id)).ToArray(); return childrenOfType.IsNullOrEmpty() ? Enumerable.Empty <T>() : childrenOfType; })); }
public override async Task <IEnumerable <T> > GetAll <T>() { return(await EZmsInMemoryCache.GetOrCreateAsync( $"DefaultContentLoader:GetAll<IEnumerable<{typeof(T).FullName}>", async entry => { entry.SetSlidingExpiration(TimeSpan.FromSeconds(10)); var contents = await _repository.GetAll <T>(); return contents; })); }
public override async Task <IEnumerable <IContent> > GetAll() { return(await EZmsInMemoryCache.GetOrCreateAsync( $"DefaultContentLoader:GetAll<IEnumerable<IContent>", async entry => { entry.SetSlidingExpiration(TimeSpan.FromSeconds(10)); var ancestors = await _repository.GetAll(); return ancestors; })); }
public override async Task <IEnumerable <int> > GetDescendents(int id) { return(await EZmsInMemoryCache.GetOrCreateAsync( $"DefaultContentLoader:GetDescendents<IEnumerable<int>({id})", async entry => { entry.SetSlidingExpiration(TimeSpan.FromSeconds(10)); var contentChildren = await _repository.GetChildren(id); return contentChildren.Select(w => w.Id); })); }
public async Task <IEnumerable <IContent> > GetContentAncestors(int?contentId, bool includeCurrentPage = false) { var cacheResult = await EZmsInMemoryCache.GetOrCreateAsync( $"NavigationService:GetContentAncestors:{contentId}:{includeCurrentPage}", async entry => { entry.SetSlidingExpiration(TimeSpan.FromSeconds(60)).SetPriority(CacheItemPriority.Normal); if (!contentId.HasValue) { return(Enumerable.Empty <Content>()); } var ancestors = await _contentRepository.GetAncestors(contentId.Value, includeCurrentPage); return(ancestors); }); return(cacheResult); }
public override async Task <IContent> GetContent(int id, int?version = null) { return(await EZmsInMemoryCache.GetOrCreateAsync($"DefaultContentLoader:GetContent({id}, {version})", async entry => { entry.SetSlidingExpiration(TimeSpan.FromSeconds(10)); if (version.HasValue) { var cv = await _contentVersionRepository.GetContent(version.Value); if (cv != null) { return (IContent)cv; } } var content = await _repository.GetContent(id); if (content == null || !content.Published) { return null; } return (IContent)content; })); }
public override async Task <T> Get <T>(int id, int?version = null) { return(await EZmsInMemoryCache.GetOrCreateAsync($"DefaultContentLoader:Get<{typeof(T).FullName}>({id}, {version})", async entry => { entry.SetSlidingExpiration(TimeSpan.FromSeconds(10)); if (version.HasValue) { var cv = await _contentVersionRepository.Get <T>(version.Value, true); if (cv != null) { return cv; } } var content = await _repository.GetContent(id); if (content == null || !content.Published || content.ModelType != typeof(T)) { return default(T); } return content.ToType <T>(); })); }