Example #1
0
        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);
            }));
        }
Example #6
0
        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>();
            }));
        }