/// <summary> /// Gets a navigation hierarchy based on data provided by the CTB router. /// </summary> /// <param name="siteCulture">Site culture.</param> /// <returns>Navigation hierarchy of a given culture.</returns> private async Task <NavigationItem> GetContentTreeNavigationAsync(SiteCulture?siteCulture, CancellationToken?cancellationToken) { var checkedCulture = GetSiteCulture(siteCulture); NavigationItem navigation; if (!_memoryCache.TryGetValue(checkedCulture.IsoCode, out navigation)) { var allItems = (await _basePageRepository.GetPagesByTypeAndCultureAsync( NavigationEnabledPageTypes, checkedCulture, $"{nameof(NavigationRepository)}|{nameof(GetContentTreeNavigationAsync)}|{checkedCulture.IsoCode}", filter => GetDefaultFilter(filter) .MenuItems(), cacheDependencies: NavigationEnabledTypeDependencies.ToArray(), cancellationToken: cancellationToken)) .Select(basePage => MapBaseToNavigationDto(basePage)); navigation = DecorateItems(RootDto, allItems, GetContentTreeBasedUrl); var changeToken = _cacheDependencyAdapter.GetChangeToken(NavigationEnabledTypeDependencies?.ToArray()); _memoryCache.Set(checkedCulture.IsoCode, navigation, changeToken); } return(navigation); }
/// <summary> /// Gets a navigation hierarchy based on data provided by the CTB router. /// </summary> /// <param name="siteCulture">Site culture.</param> /// <returns>Navigation hierarchy of a given culture.</returns> private NavigationItem GetContentTreeNavigation(SiteCulture?siteCulture) { var checkedCulture = GetSiteCulture(siteCulture); var allItems = _basePageRepository.GetPagesByTypeAndCulture( NavigationEnabledPageTypes, checkedCulture, $"{nameof(NavigationRepository)}|{nameof(GetContentTreeNavigation)}|{checkedCulture.IsoCode}", filter => GetDefaultFilter(filter) .MenuItems(), cacheDependencies: NavigationEnabledTypeDependencies.ToArray()) .Select(basePage => MapBaseToNavigationDto(basePage)); return(DecorateItems(RootDto, allItems, GetContentTreeBasedUrl)); }