internal static void MoveObjectsInMailbox(MailboxSession mailboxSession, StoreId destFolderId, List <StoreId> storeIds) { StoreId[] array = null; while (storeIds.Count > 1024) { if (array == null) { array = new StoreId[1024]; } storeIds.CopyTo(0, array, 0, array.Length); storeIds.RemoveRange(0, array.Length); mailboxSession.Move(destFolderId, array); } if (storeIds.Count > 0) { mailboxSession.Move(destFolderId, storeIds.ToArray()); } }
internal static void MoveNonSearchLogItemsInMailbox(MailboxSession mailboxSession, Folder parentFolder, StoreId destFolderId) { using (QueryResult queryResult = parentFolder.ItemQuery(ItemQueryType.None, new NotFilter(new TextFilter(StoreObjectSchema.ItemClass, "IPM.Note.Microsoft.Exchange.Search.Log", MatchOptions.ExactPhrase, MatchFlags.IgnoreCase)), null, new PropertyDefinition[] { ItemSchema.Id })) { for (;;) { object[][] rows = queryResult.GetRows(1024); if (rows == null || rows.Length <= 0) { break; } StoreId[] ids = (from x in rows where x[0] != null select x[0] as StoreId).ToArray <StoreId>(); mailboxSession.Move(destFolderId, ids); } } }
protected override void ProcessCommand(MailboxSession mailboxSession, XmlDocument doc) { if (base.CollectionRequest.CollectionName == null || base.CollectionRequest.ParentId == null || base.CollectionRequest.CollectionId == null) { base.ProtocolLogger.SetValue(ProtocolLoggerData.Error, "InvalidURLParameters"); throw new AirSyncPermanentException(HttpStatusCode.BadRequest, StatusCode.InvalidCombinationOfIDs, null, false); } using (Folder folder = Folder.Bind(mailboxSession, base.CollectionRequest.CollectionId, null)) { if (folder.DisplayName == base.CollectionRequest.CollectionName && folder.ParentId.Equals(base.CollectionRequest.ParentId)) { base.ProtocolLogger.SetValue(ProtocolLoggerData.Error, "FolderExistsInCollectionMove"); throw new AirSyncPermanentException(StatusCode.Sync_ProtocolVersionMismatch, CollectionCommand.ConstructErrorXml(StatusCode.Sync_ProtocolVersionMismatch), null, false); } if (base.CollectionRequest.CollectionName != null) { folder.DisplayName = base.CollectionRequest.CollectionName; folder.Save(); folder.Load(); } if (!base.CollectionRequest.ParentId.Equals(folder.ParentId)) { OperationResult operationResult = mailboxSession.Move(base.CollectionRequest.ParentId, new StoreObjectId[] { base.CollectionRequest.CollectionId }).OperationResult; if (operationResult != OperationResult.Succeeded) { base.ProtocolLogger.SetValue(ProtocolLoggerData.Error, "FolderNotFoundInCollectionMove"); throw new AirSyncPermanentException(StatusCode.Sync_ProtocolError, CollectionCommand.ConstructErrorXml(StatusCode.Sync_ProtocolError), null, false); } } } XmlNode xmlNode = doc.CreateElement("Response", "FolderHierarchy:"); XmlNode xmlNode2 = doc.CreateElement("Status", "FolderHierarchy:"); xmlNode2.InnerText = "1"; doc.AppendChild(xmlNode); xmlNode.AppendChild(xmlNode2); }