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();
            }
        }
Exemple #2
0
        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
            });
        }