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