public void AddFilterToFavorites() { string text = ((string)base.GetParameter("fltrSbj")).Trim(); if (text.Length == 0) { throw new OwaEventHandlerException("User did not provide name for new folder", LocalizedStrings.GetNonEncoded(-41080803), true); } if (text.Length > 256) { text = text.Substring(0, 256); } base.BindToFolder(); try { if (Utilities.IsDefaultFolder(base.ContextFolder, DefaultFolderType.DeletedItems) || Utilities.IsItemInDefaultFolder(base.ContextFolder, DefaultFolderType.DeletedItems) || Utilities.IsFavoritesFilterFolder(base.UserContext, base.ContextFolder)) { throw new OwaInvalidRequestException("Only normal folder or Outlook search folder can be filtered."); } if (base.FilteredFolder != null) { NavigationNodeCollection navigationNodeCollection = NavigationNodeCollection.TryCreateNavigationNodeCollection(base.UserContext, base.UserContext.MailboxSession, NavigationNodeGroupSection.First); if (navigationNodeCollection.FindFoldersById(base.FilteredFolder.Id.ObjectId).Length > 0) { throw new OwaEventHandlerException("Filtered view has already been added.", LocalizedStrings.GetNonEncoded(-44763698), true); } int num = 0; foreach (NavigationNodeFolder navigationNodeFolder in navigationNodeCollection[0].Children) { if (navigationNodeFolder.IsValid && navigationNodeFolder.IsFilteredView) { num++; } } if (num >= Globals.MaximumFilteredViewInFavoritesPerUser) { string description = string.Format(base.UserContext.UserCulture, LocalizedStrings.GetNonEncoded(-529843556), new object[] { Globals.MaximumFilteredViewInFavoritesPerUser }); throw new OwaEventHandlerException("Filtered view exceeds budget.", description, true); } base.FilteredFolder[FolderSchema.SearchFolderAllowAgeout] = false; base.FilteredFolder.DisplayName = text; FolderSaveResult folderSaveResult = base.FilteredFolder.Save(); if (folderSaveResult.OperationResult != OperationResult.Succeeded) { if (Utilities.IsFolderNameConflictError(folderSaveResult)) { throw new OwaEventHandlerException("Folder name exists", LocalizedStrings.GetNonEncoded(-1782850773), OwaEventHandlerErrorCode.FolderNameExists, true); } throw new OwaEventHandlerException("Fail to save folder properties.", LocalizedStrings.GetNonEncoded(-920350130), true); } else { base.FilteredFolder.Load(FolderList.FolderTreeQueryProperties); NavigationNodeFolder navigationNodeFolder2 = navigationNodeCollection.AppendFolderToFavorites(base.FilteredFolder); navigationNodeFolder2.SetFilterParameter(base.FilterCondition.SourceFolderId.StoreObjectId, base.FilterCondition.GetBooleanFlags(), base.FilterCondition.GetCategories(), base.FilterCondition.From, base.FilterCondition.To); navigationNodeCollection.Save(base.UserContext.MailboxSession); navigationNodeCollection = NavigationNodeCollection.TryCreateNavigationNodeCollection(base.UserContext, base.UserContext.MailboxSession, NavigationNodeGroupSection.First); NavigationHost.RenderFavoritesAndNavigationTrees(this.Writer, base.UserContext, null, new NavigationNodeGroupSection[] { NavigationNodeGroupSection.First }); } } } finally { this.EndProcessEvent(); } }
public void AddToFavorites() { base.ThrowIfCannotActAsOwner(); OwaStoreObjectId owaStoreObjectId = (OwaStoreObjectId)base.GetParameter("Id"); if (owaStoreObjectId.OwaStoreObjectIdType != OwaStoreObjectIdType.MailBoxObject && owaStoreObjectId.OwaStoreObjectIdType != OwaStoreObjectIdType.ArchiveMailboxObject) { throw new OwaInvalidRequestException("Only mailbox objects can be added to favorites."); } using (Folder folder = Utilities.GetFolder <Folder>(base.UserContext, owaStoreObjectId, FolderList.FolderTreeQueryProperties)) { if (Utilities.IsDefaultFolder(folder, DefaultFolderType.Root)) { throw new OwaInvalidRequestException("Cannot add root folder to favorites."); } if (!string.IsNullOrEmpty(folder.ClassName) && !ObjectClass.IsOfClass(folder.ClassName, "IPF.Note")) { throw new OwaInvalidRequestException("Only mail folder can be added to favorites."); } if (Utilities.IsDefaultFolder(folder, DefaultFolderType.SearchFolders)) { throw new OwaInvalidRequestException("Cannot add search folder root to favorites."); } NavigationNodeCollection navigationNodeCollection = NavigationNodeCollection.TryCreateNavigationNodeCollection(base.UserContext, base.UserContext.MailboxSession, NavigationNodeGroupSection.First); navigationNodeCollection.RemoveFolderByLegacyDNandId(((MailboxSession)folder.Session).MailboxOwnerLegacyDN, owaStoreObjectId.StoreObjectId); if (base.IsParameterSet("tgtid")) { StoreObjectId storeObjectId = (StoreObjectId)base.GetParameter("tgtid"); } if (base.IsParameterSet("tgtid")) { int num = navigationNodeCollection[0].Children.FindChildByNodeId((StoreObjectId)base.GetParameter("tgtid")); if (num < 0) { base.RenderPartialFailure(817935633, OwaEventHandlerErrorCode.NotSet); } else { if (base.IsParameterSet("mt")) { int num2 = (int)base.GetParameter("mt"); if (num2 != 1 && num2 != 2) { throw new OwaInvalidRequestException("Only before or after is valid."); } if (num2 == 2) { num++; } } navigationNodeCollection.InsertMyFolderToFavorites(folder, num); } } else { navigationNodeCollection.AppendFolderToFavorites(folder); } navigationNodeCollection.Save(base.UserContext.MailboxSession); } NavigationHost.RenderFavoritesAndNavigationTrees(this.Writer, base.UserContext, null, new NavigationNodeGroupSection[] { NavigationNodeGroupSection.First }); }