Пример #1
0
        private static SearchFolder CreateAndUpdateFilteredViewSearchFolder(MailboxSession mailboxSession, OwaSearchContext searchContext, StoreId searchFoldersRootId, SearchFolderCriteria searchFolderCriteria)
        {
            ExTraceGlobals.StorageTracer.TraceDebug <string, string>(0L, "[OwaFilterState::CreateAndUpdateFilteredViewSearchFolder] Create filtered view search folder for view filter: {0} search folder identity: {1} ", searchContext.ViewFilter.ToString(), searchContext.ClientSearchFolderIdentity);
            SearchFolder searchFolder = SearchFolder.Create(mailboxSession, searchFoldersRootId, searchContext.ClientSearchFolderIdentity, CreateMode.OpenIfExists);

            OwaFilterState.UpdateFilteredViewSearchFolder(mailboxSession, searchFolder, searchContext);
            searchContext.SearchFolderId = searchFolder.StoreObjectId;
            searchContext.IsSearchFailed = !OwaFilterState.ApplyOwaContinuousSearch(searchFolder, searchFolderCriteria, mailboxSession, searchContext);
            if (searchContext.IsSearchFailed)
            {
                ExTraceGlobals.StorageTracer.TraceError(0L, "[OwaFilterState::CreateAndUpdateFilteredViewSearchFolder] deleting searchContext.SearchFolderId: " + searchContext.SearchFolderId);
                searchContext.ViewFilterActions |= ViewFilterActions.DeleteInvalidSearchFolder;
                mailboxSession.Delete(DeleteItemFlags.HardDelete, new StoreId[]
                {
                    searchContext.SearchFolderId
                });
                searchFolder.Dispose();
                searchFolder = null;
            }
            else if (OwaFilterState.LinkViewFolder(mailboxSession, searchContext.FolderIdToSearch, searchFolder, searchContext.ViewFilter))
            {
                searchContext.ViewFilterActions |= ViewFilterActions.LinkToSourceFolderSucceeded;
            }
            return(searchFolder);
        }
        private Folder CreateNewFolder(DefaultFolderContext context, string displayName, StoreObjectId parentFolderObjectId)
        {
            Folder result;

            if (this.storeObjectType == StoreObjectType.Folder || this.storeObjectType == StoreObjectType.ContactsFolder)
            {
                result = Folder.Create(context.Session, parentFolderObjectId, this.storeObjectType, displayName, CreateMode.CreateNew);
            }
            else if (this.storeObjectType == StoreObjectType.OutlookSearchFolder)
            {
                result = OutlookSearchFolder.Create(context.Session, displayName);
            }
            else
            {
                if (this.storeObjectType != StoreObjectType.SearchFolder)
                {
                    throw new NotSupportedException(string.Format("The type of folder cannot be created. type = {0}.", this.storeObjectType));
                }
                result = SearchFolder.Create(context.Session, parentFolderObjectId, displayName, CreateMode.CreateNew);
            }
            return(result);
        }