public FolderId CreateChildFolder(IFolderDataBase folderData, FolderId parentFolderId)
 {
     Folder folder = new Folder(CurrentExchangeService);
     folder.DisplayName = folderData.DisplayName;
     folder.FolderClass = folderData.FolderType;
     folder.Save(parentFolderId);
     return FindFolder(folderData, parentFolderId);
 }
        public FolderId FindFolder(IFolderDataBase folderData, FolderId parentFolderId, int findCount = 0)
        {
            FolderView view = new FolderView(1);
            view.PropertySet = new PropertySet(BasePropertySet.IdOnly);
            view.Traversal = FolderTraversal.Shallow;
            SearchFilter filter = new SearchFilter.IsEqualTo(FolderSchema.DisplayName, folderData.DisplayName);
            FindFoldersResults results = CurrentExchangeService.FindFolders(parentFolderId, filter, view);

            if (results.TotalCount > 1)
            {
                throw new InvalidOperationException("Find more than 1 folder.");
            }
            else if (results.TotalCount == 0)
            {
                if (findCount > 3)
                {
                    return null;
                }
                Thread.Sleep(500);
                return FindFolder(folderData, parentFolderId, ++findCount);
            }
            else
            {
                foreach (var result in results)
                {
                    return result.Id;
                }
                throw new InvalidOperationException("Thread sleep time is too short.");
            }
        }
Exemple #3
0
        private FolderId FindAndCreateFolder(IFolderDataBase folder, FolderId parentFolderId, StringBuilder keyBuilder)
        {
            FolderId folderId = null;
            keyBuilder.Append(folder.DisplayName).Append("\\");
            var key = keyBuilder.ToString(); //string.Format("{0}-{1}", folder.DisplayName, parentFolderId.UniqueId);
            if (CreatedFolders.TryGetValue(key, out folderId))
                return folderId;

            folderId = FindFolder(folder, parentFolderId.UniqueId, 3);
            if (folderId == null)
                folderId = CreateChildFolder(folder, parentFolderId.UniqueId);
            CreatedFolders.Add(key, folderId);
            return folderId;
        }
Exemple #4
0
 private FolderId CreateChildFolder(IFolderDataBase folderData, string parentFolderId)
 {
     _ewsOperator.FolderSave(folderData.DisplayName, folderData.FolderType, parentFolderId);
     return FindFolder(folderData, parentFolderId);
 }