internal static void AddGSCalendarToSharedFoldersGroup(UserContext userContext, ExchangePrincipal exchangePrincipal) { NavigationNodeCollection navigationNodeCollection = NavigationNodeCollection.TryCreateNavigationNodeCollection(userContext, userContext.MailboxSession, NavigationNodeGroupSection.Calendar); if (navigationNodeCollection.FindGSCalendarsByLegacyDN(exchangePrincipal.LegacyDn).Length == 0) { int defaultGroup = navigationNodeCollection.GetDefaultGroup(NavigationNodeGroupType.SharedFoldersGroup); NavigationNodeGroup navigationNodeGroup = navigationNodeCollection[defaultGroup]; NavigationNodeFolder node = NavigationNodeFolder.CreateGSNode(exchangePrincipal, navigationNodeGroup.NavigationNodeGroupClassId, navigationNodeGroup.Subject, exchangePrincipal.MailboxInfo.DisplayName, navigationNodeGroup.NavigationNodeGroupSection); navigationNodeGroup.Children.Insert(navigationNodeGroup.Children.Count, node); navigationNodeCollection.Save(userContext.MailboxSession); } }
internal static void AddNonMailFolderToSharedFoldersGroup(UserContext userContext, Folder folder, NavigationNodeGroupSection groupSection) { if (groupSection == NavigationNodeGroupSection.Mail) { throw new ArgumentOutOfRangeException("Cannot add mail folder to shared folder group"); } NavigationNodeCollection navigationNodeCollection = NavigationNodeCollection.TryCreateNavigationNodeCollection(userContext, userContext.MailboxSession, groupSection); if (navigationNodeCollection.FindFoldersById(folder.Id.ObjectId).Length == 0) { navigationNodeCollection.AddFolderToDefaultGroup(userContext, NavigationNodeGroupType.SharedFoldersGroup, folder, true); navigationNodeCollection.Save(userContext.MailboxSession); } }