Beispiel #1
0
        protected async Task <IEnumerable <TPage> > GetPagesOfMultipleTypesAsync(
            IEnumerable <string> types,
            SiteCulture culture,
            Action <MultiDocumentQuery>?filter = default)
        {
            MultiDocumentQuery query = GetQueryForMultipleTypes(types, culture, filter);

            return((await query
                    .GetEnumerableTypedResultAsync())
                   .Select(page => page as TPage)
                   .Where(page => page != null) !);
        }
Beispiel #2
0
        public virtual IEnumerable <TPageDto> GetPagesByTypeAndCulture(
            IEnumerable <string> types,
            SiteCulture culture,
            string cacheKey,
            Action <MultiDocumentQuery>?filter = default,
            Func <TPage, TPageDto, TPageDto>?additionalMapper = default,
            bool includeAttachments = default,
            params string[] cacheDependencies)
        {
            var cacheSettings = GetCacheSettings(cacheKey, cacheDependencies);

            var result = _repositoryServices.ProgressiveCache.Load(cacheSettings =>
                                                                   GetPagesOfMultipleTypes(types, culture, filter),
                                                                   cacheSettings);

            return(MapPages(result, additionalMapper, includeAttachments));
        }
        private IEnumerable <KeyValuePair <SiteCulture, string> >?GetDatabaseUrlVariants(string searchPath, SiteCulture currentCulture)
        {
            var navigation = _navigationRepository.GetWholeNavigation();
            var currentPageNavigationItem = GetNavigationItemByRelativeUrl(searchPath, navigation[currentCulture]);

            if (currentPageNavigationItem != null)
            {
                var databaseVariants = new List <KeyValuePair <SiteCulture, NavigationItem> >();
                databaseVariants.Add(new KeyValuePair <SiteCulture, NavigationItem>(currentCulture, currentPageNavigationItem));

                foreach (var cultureVariant in navigation.Where(cultureVariant => !cultureVariant.Key.Equals(currentCulture)))
                {
                    var otherCultureNavigationItem = _navigationRepository.GetNavigationItemByNodeId(currentPageNavigationItem.NodeId, cultureVariant.Value);

                    if (otherCultureNavigationItem != null)
                    {
                        databaseVariants.Add(new KeyValuePair <SiteCulture, NavigationItem>(cultureVariant.Key, otherCultureNavigationItem));
                    }
                }

                return(databaseVariants.Select(variant => new KeyValuePair <SiteCulture, string>(variant.Key, variant.Value.RelativeUrl !)));
            }

            return(null);
        }