// Token: 0x060007BD RID: 1981 RVA: 0x00037EC4 File Offset: 0x000360C4 private static List <VersionedId> GetOldMeetingMessages(MailboxSession mailboxSession, MeetingMessage item, byte[] globalObjectId, int rumSequenceNumber, out OldMessageDeletion.LatestItemInfo latestItemInfo) { SortBy[] array = new SortBy[2]; latestItemInfo.FullUpdateDeleted = false; latestItemInfo.RollingHighlight = (int)Utils.SafeGetProperty(item, CalendarItemBaseSchema.ChangeHighlight, 0); latestItemInfo.LatestOldStartTime = ExDateTime.MinValue; latestItemInfo.LatestOldEndTime = ExDateTime.MinValue; latestItemInfo.LatestOldLocationStr = string.Empty; latestItemInfo.LatestSequenceNumber = -1; latestItemInfo.LatestItemId = item.Id; latestItemInfo.LatestClientSubmitTime = (ExDateTime)Utils.SafeGetProperty(item, ItemSchema.SentTime, ExDateTime.MinValue); ExDateTime valueOrDefault = item.GetValueOrDefault <ExDateTime>(CalendarItemBaseSchema.OwnerCriticalChangeTime, ExDateTime.MinValue); VersionedId id = item.Id; array[0] = new SortBy(CalendarItemBaseSchema.GlobalObjectId, SortOrder.Ascending); array[1] = new SortBy(CalendarItemBaseSchema.AppointmentSequenceNumber, SortOrder.Descending); ComparisonFilter seekFilter = new ComparisonFilter(ComparisonOperator.Equal, CalendarItemBaseSchema.GlobalObjectId, globalObjectId); List <VersionedId> list = new List <VersionedId>(); using (Folder folder = Folder.Bind(mailboxSession, item.ParentId)) { using (QueryResult queryResult = folder.ItemQuery(ItemQueryType.None, null, array, OldMessageDeletion.OMDColumnsToQuery)) { queryResult.SeekToCondition(SeekReference.OriginBeginning, seekFilter); bool flag = true; while (flag) { IStorePropertyBag[] propertyBags = queryResult.GetPropertyBags(25); if (propertyBags.Length <= 1) { break; } foreach (IStorePropertyBag storePropertyBag in propertyBags) { string valueOrDefault2 = storePropertyBag.GetValueOrDefault <string>(OldMessageDeletion.OMDColumnsToQuery[0], null); if (!string.IsNullOrEmpty(valueOrDefault2) && (ObjectClass.IsMeetingRequest(valueOrDefault2) || ObjectClass.IsMeetingCancellation(valueOrDefault2))) { byte[] valueOrDefault3 = storePropertyBag.GetValueOrDefault <byte[]>(OldMessageDeletion.OMDColumnsToQuery[2], null); if (!OldMessageDeletion.GlobalObjectIdMatches(globalObjectId, valueOrDefault3)) { flag = false; break; } VersionedId valueOrDefault4 = storePropertyBag.GetValueOrDefault <VersionedId>(OldMessageDeletion.OMDColumnsToQuery[1], null); if (valueOrDefault4 != null && !id.Equals(valueOrDefault4)) { int valueOrDefault5 = storePropertyBag.GetValueOrDefault <int>(OldMessageDeletion.OMDColumnsToQuery[3], -1); if (valueOrDefault5 != -1) { if (valueOrDefault5 > rumSequenceNumber) { latestItemInfo.LatestSequenceNumber = valueOrDefault5; return(null); } if (valueOrDefault5 == rumSequenceNumber) { ExDateTime valueOrDefault6 = storePropertyBag.GetValueOrDefault <ExDateTime>(OldMessageDeletion.OMDColumnsToQuery[8], ExDateTime.MinValue); if (valueOrDefault6 > valueOrDefault) { latestItemInfo.LatestSequenceNumber = valueOrDefault5; return(null); } } if (latestItemInfo.LatestSequenceNumber == -1) { ExDateTime valueOrDefault7 = storePropertyBag.GetValueOrDefault <ExDateTime>(OldMessageDeletion.OMDColumnsToQuery[9], ExDateTime.MinValue); if (valueOrDefault7 != ExDateTime.MinValue) { latestItemInfo.LatestOldStartTime = valueOrDefault7; } ExDateTime valueOrDefault8 = storePropertyBag.GetValueOrDefault <ExDateTime>(OldMessageDeletion.OMDColumnsToQuery[10], ExDateTime.MinValue); if (valueOrDefault7 != ExDateTime.MinValue) { latestItemInfo.LatestOldEndTime = valueOrDefault8; } string valueOrDefault9 = storePropertyBag.GetValueOrDefault <string>(OldMessageDeletion.OMDColumnsToQuery[11], null); if (!string.IsNullOrEmpty(valueOrDefault9)) { latestItemInfo.LatestOldLocationStr = valueOrDefault9; } } latestItemInfo.RollingHighlight |= storePropertyBag.GetValueOrDefault <int>(OldMessageDeletion.OMDColumnsToQuery[4], 0); MeetingMessageType valueOrDefault10 = storePropertyBag.GetValueOrDefault <MeetingMessageType>(OldMessageDeletion.OMDColumnsToQuery[13], MeetingMessageType.None); latestItemInfo.FullUpdateDeleted |= (valueOrDefault10 == MeetingMessageType.FullUpdate || valueOrDefault10 == MeetingMessageType.NewMeetingRequest); list.Add(valueOrDefault4); } } } } } } } return(list); }
// Token: 0x060007B5 RID: 1973 RVA: 0x0003739C File Offset: 0x0003559C private void DetermineIfWeDelete(List <VersionedId> itemsToDelete, MeetingMessage item, object[] rowProperties, ExDateTime itemOwnerChangeTime, string sentRepresenting, int itemSequenceNumber, ref OldMessageDeletion.LatestItemInfo latestInfo, ref bool hasAttachments, ref bool hasBody) { bool flag = item is MeetingRequest; bool flag2 = item is MeetingResponse; object obj = rowProperties[0]; MailboxSession itemStore = item.Session as MailboxSession; if (rowProperties[1] != null && !(rowProperties[1] is PropertyError)) { VersionedId versionedId = (VersionedId)rowProperties[1]; if (versionedId.Equals(latestInfo.LatestItemId)) { return; } int num = 0; bool flag3 = false; if (!(rowProperties[3] is PropertyError) && rowProperties[3] is int) { num = (int)rowProperties[3]; flag3 = true; if (latestInfo.LatestSequenceNumber < num) { if (rowProperties[9] is ExDateTime) { latestInfo.LatestOldStartTime = (ExDateTime)rowProperties[9]; latestInfo.LatestSequenceNumber = num; } if (rowProperties[10] is ExDateTime) { latestInfo.LatestOldEndTime = (ExDateTime)rowProperties[10]; latestInfo.LatestSequenceNumber = num; } if (rowProperties[11] is string && !string.IsNullOrEmpty((string)rowProperties[11])) { latestInfo.LatestOldLocationStr = (string)rowProperties[11]; latestInfo.LatestSequenceNumber = num; } } } bool flag4 = false; bool flag5 = false; bool flag6 = false; if (flag3) { flag4 = (num == itemSequenceNumber); flag5 = (num < itemSequenceNumber); } else if (!(rowProperties[6] is PropertyError) && rowProperties[6] is ExDateTime && latestInfo.LatestClientSubmitTime >= (ExDateTime)rowProperties[6]) { flag6 = true; } if (flag5 || flag6) { if (!flag2) { if (flag && !(rowProperties[4] is PropertyError) && rowProperties[4] is int) { latestInfo.RollingHighlight |= (int)rowProperties[4]; } object obj2 = rowProperties[13]; if (obj2 is int) { MeetingMessageType meetingMessageType = (MeetingMessageType)obj2; latestInfo.FullUpdateDeleted |= (meetingMessageType == MeetingMessageType.FullUpdate || meetingMessageType == MeetingMessageType.NewMeetingRequest); } itemsToDelete.Add(versionedId); return; } if (!this.SentRepresentingMatches(sentRepresenting, rowProperties[5])) { return; } itemsToDelete.Add(versionedId); return; } else if (flag4) { if (flag2) { this.HandleResponsesWithSameSequenceNumber(itemStore, item, versionedId, rowProperties, sentRepresenting, ref latestInfo, itemsToDelete, ref hasAttachments, ref hasBody); return; } if (flag && !(rowProperties[4] is PropertyError) && rowProperties[4] is int) { latestInfo.RollingHighlight |= (int)rowProperties[4]; } if (!(rowProperties[8] is PropertyError) && rowProperties[8] is ExDateTime) { ExDateTime t = (ExDateTime)rowProperties[8]; if (t < itemOwnerChangeTime) { if (!(rowProperties[4] is PropertyError) && rowProperties[4] is int) { latestInfo.RollingHighlight |= (int)rowProperties[4]; } object obj3 = rowProperties[13]; if (obj3 is int) { MeetingMessageType meetingMessageType2 = (MeetingMessageType)obj3; latestInfo.FullUpdateDeleted |= (meetingMessageType2 == MeetingMessageType.FullUpdate || meetingMessageType2 == MeetingMessageType.NewMeetingRequest); } itemsToDelete.Add(versionedId); } } } } }