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."); } }
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; }
private FolderId CreateChildFolder(IFolderDataBase folderData, string parentFolderId) { _ewsOperator.FolderSave(folderData.DisplayName, folderData.FolderType, parentFolderId); return FindFolder(folderData, parentFolderId); }