private ManagedNavigation GetManagedNavigation(Web web, WebNavigationSettings navigationSettings, Boolean currentNavigation)
        {
            var result = new ManagedNavigation
            {
                TermStoreId = currentNavigation ? navigationSettings.CurrentNavigation.TermStoreId.ToString() : navigationSettings.GlobalNavigation.TermStoreId.ToString(),
                TermSetId   = currentNavigation ? navigationSettings.CurrentNavigation.TermSetId.ToString() : navigationSettings.GlobalNavigation.TermSetId.ToString(),
            };

            // Apply any token replacement for taxonomy IDs
            TokenizeManagedNavigationTaxonomyIds(web, result);

            return(result);
        }
        protected void TokenizeManagedNavigationTaxonomyIds(Web web, ManagedNavigation managedNavigation)
        {
            // Replace Taxonomy field references to SspId, TermSetId with tokens
            TaxonomySession session      = TaxonomySession.GetTaxonomySession(web.Context);
            TermStore       defaultStore = session.GetDefaultSiteCollectionTermStore();

            web.Context.Load(defaultStore, ts => ts.Name, ts => ts.Id);
            web.Context.ExecuteQueryRetry();

            Guid navigationTermStoreId = Guid.Parse(managedNavigation.TermStoreId);

            if (navigationTermStoreId != Guid.Empty)
            {
                TermStore navigationTermStore = session.TermStores.GetById(navigationTermStoreId);
                web.Context.Load(navigationTermStore, ts => ts.Name, ts => ts.Id);
                web.Context.ExecuteQueryRetry();

                if (!navigationTermStore.ServerObjectIsNull())
                {
                    if (navigationTermStore.Id == defaultStore.Id)
                    {
                        managedNavigation.TermStoreId = "{sitecollectiontermstoreid}";
                    }
                    else
                    {
                        managedNavigation.TermStoreId = $"{{termstoreid:{navigationTermStore.Name}}}";
                    }

                    Guid navigationTermSetId = Guid.Parse(managedNavigation.TermSetId);
                    if (navigationTermSetId != Guid.Empty)
                    {
                        var navigationTermSet = navigationTermStore.GetTermSet(navigationTermSetId);
                        web.Context.Load(navigationTermSet, ts => ts.Name, ts => ts.Id, ts => ts.Group);
                        web.Context.ExecuteQueryRetry();

                        if (!navigationTermSet.ServerObjectIsNull())
                        {
                            managedNavigation.TermSetId = $"{{termsetid:{navigationTermSet.Group.Name}:{navigationTermSet.Name}}}";
                        }
                    }
                }
            }
        }
        protected void TokenizeManagedNavigationTaxonomyIds(Web web, ManagedNavigation managedNavigation)
        {
            // Replace Taxonomy field references to SspId, TermSetId with tokens
            TaxonomySession session = TaxonomySession.GetTaxonomySession(web.Context);
            TermStore defaultStore = session.GetDefaultSiteCollectionTermStore();
            web.Context.Load(defaultStore, ts => ts.Name, ts => ts.Id);
            web.Context.ExecuteQueryRetry();

            Guid navigationTermStoreId = Guid.Parse(managedNavigation.TermStoreId);
            if (navigationTermStoreId != Guid.Empty)
            {
                TermStore navigationTermStore = session.TermStores.GetById(navigationTermStoreId);
                web.Context.Load(navigationTermStore, ts => ts.Name, ts => ts.Id);
                web.Context.ExecuteQueryRetry();

                if (!navigationTermStore.ServerObjectIsNull())
                {
                    if (navigationTermStore.Id == defaultStore.Id)
                    {
                        managedNavigation.TermStoreId = "{sitecollectiontermstoreid}";
                    }
                    else
                    {
                        managedNavigation.TermStoreId = $"{{termstoreid:{navigationTermStore.Name}}}";
                    }

                    Guid navigationTermSetId = Guid.Parse(managedNavigation.TermSetId);
                    if (navigationTermSetId != Guid.Empty)
                    {
                        var navigationTermSet = navigationTermStore.GetTermSet(navigationTermSetId);
                        web.Context.Load(navigationTermSet, ts => ts.Name, ts => ts.Id, ts => ts.Group);
                        web.Context.ExecuteQueryRetry();

                        if (!navigationTermSet.ServerObjectIsNull())
                        {
                            managedNavigation.TermSetId = $"{{termsetid:{navigationTermSet.Group.Name}:{navigationTermSet.Name}}}";
                        }
                    }
                }
            }
        }
        private ManagedNavigation GetManagedNavigation(Web web, WebNavigationSettings navigationSettings, Boolean currentNavigation)
        {
            var result = new ManagedNavigation
            {
                TermStoreId = currentNavigation ? navigationSettings.CurrentNavigation.TermStoreId.ToString() : navigationSettings.GlobalNavigation.TermStoreId.ToString(),
                TermSetId = currentNavigation ? navigationSettings.CurrentNavigation.TermSetId.ToString() : navigationSettings.GlobalNavigation.TermSetId.ToString(),
            };

            // Apply any token replacement for taxonomy IDs
            TokenizeManagedNavigationTaxonomyIds(web, result);

            return (result);
        }