private ItemId PopulateItemIdFromItemExtendedPropertyValues(ExtendedPropertyType[] extendedProperties) { string id = null; string parentFolder = null; string primaryItemId = null; uint size = 0U; string subject = null; int documentId = 0; string text = null; string sender = null; string senderSmtpAddress = null; DateTime minValue = DateTime.MinValue; DateTime minValue2 = DateTime.MinValue; string importance = null; bool isRead = false; string text2 = null; BodyTagInfo btInfo = null; bool sentItems = false; if (extendedProperties != null) { foreach (ExtendedPropertyType extendedPropertyType in extendedProperties) { if (string.Compare(extendedPropertyType.ExtendedFieldURI.PropertySetId, Constants.MailboxItemIdPropertyIdSet, StringComparison.OrdinalIgnoreCase) == 0) { if (string.Compare(extendedPropertyType.ExtendedFieldURI.PropertyName, MailboxItemIdList.ItemIdExtendedProperty.PropertyName, StringComparison.OrdinalIgnoreCase) == 0 && extendedPropertyType.ExtendedFieldURI.PropertyType == MailboxItemIdList.ItemIdExtendedProperty.PropertyType) { id = (string)extendedPropertyType.Item; } else if (string.Compare(extendedPropertyType.ExtendedFieldURI.PropertyName, MailboxItemIdList.ParentFolderIdExtendedProperty.PropertyName, StringComparison.OrdinalIgnoreCase) == 0 && extendedPropertyType.ExtendedFieldURI.PropertyType == MailboxItemIdList.ParentFolderIdExtendedProperty.PropertyType) { parentFolder = (string)extendedPropertyType.Item; } else if (string.Compare(extendedPropertyType.ExtendedFieldURI.PropertyName, MailboxItemIdList.PrimaryItemIdExtendedProperty.PropertyName, StringComparison.OrdinalIgnoreCase) == 0 && extendedPropertyType.ExtendedFieldURI.PropertyType == MailboxItemIdList.PrimaryItemIdExtendedProperty.PropertyType) { primaryItemId = (string)extendedPropertyType.Item; } else if (string.Compare(extendedPropertyType.ExtendedFieldURI.PropertyName, MailboxItemIdList.ItemSizeExtendedProperty.PropertyName, StringComparison.OrdinalIgnoreCase) == 0 && extendedPropertyType.ExtendedFieldURI.PropertyType == MailboxItemIdList.ItemSizeExtendedProperty.PropertyType) { uint.TryParse(extendedPropertyType.Item as string, out size); } else if (string.Compare(extendedPropertyType.ExtendedFieldURI.PropertyName, MailboxItemIdList.DocumentIdExtendedProperty.PropertyName, StringComparison.OrdinalIgnoreCase) == 0 && extendedPropertyType.ExtendedFieldURI.PropertyType == MailboxItemIdList.DocumentIdExtendedProperty.PropertyType) { int.TryParse(extendedPropertyType.Item as string, out documentId); } else if (string.Compare(extendedPropertyType.ExtendedFieldURI.PropertyName, MailboxItemIdList.SubjectExtendedProperty.PropertyName, StringComparison.OrdinalIgnoreCase) == 0 && extendedPropertyType.ExtendedFieldURI.PropertyType == MailboxItemIdList.SubjectExtendedProperty.PropertyType) { subject = MailboxItemIdList.DecodeDataFromEws((string)extendedPropertyType.Item); } else if (string.Compare(extendedPropertyType.ExtendedFieldURI.PropertyName, MailboxItemIdList.SenderExtendedProperty.PropertyName, StringComparison.OrdinalIgnoreCase) == 0 && extendedPropertyType.ExtendedFieldURI.PropertyType == MailboxItemIdList.SenderExtendedProperty.PropertyType) { sender = MailboxItemIdList.DecodeDataFromEws((string)extendedPropertyType.Item); } else if (string.Compare(extendedPropertyType.ExtendedFieldURI.PropertyName, MailboxItemIdList.SenderSmtpAddressExtendedProperty.PropertyName, StringComparison.OrdinalIgnoreCase) == 0 && extendedPropertyType.ExtendedFieldURI.PropertyType == MailboxItemIdList.SenderExtendedProperty.PropertyType) { senderSmtpAddress = MailboxItemIdList.DecodeDataFromEws((string)extendedPropertyType.Item); } else if (string.Compare(extendedPropertyType.ExtendedFieldURI.PropertyName, MailboxItemIdList.ReceivedTimeExtendedProperty.PropertyName, StringComparison.OrdinalIgnoreCase) == 0 && extendedPropertyType.ExtendedFieldURI.PropertyType == MailboxItemIdList.ReceivedTimeExtendedProperty.PropertyType) { DateTime.TryParse(extendedPropertyType.Item as string, out minValue); } else if (string.Compare(extendedPropertyType.ExtendedFieldURI.PropertyName, MailboxItemIdList.SentTimeExtendedProperty.PropertyName, StringComparison.OrdinalIgnoreCase) == 0 && extendedPropertyType.ExtendedFieldURI.PropertyType == MailboxItemIdList.SentTimeExtendedProperty.PropertyType) { DateTime.TryParse(extendedPropertyType.Item as string, out minValue2); } else if (string.Compare(extendedPropertyType.ExtendedFieldURI.PropertyName, MailboxItemIdList.ImportanceExtendedProperty.PropertyName, StringComparison.OrdinalIgnoreCase) == 0 && extendedPropertyType.ExtendedFieldURI.PropertyType == MailboxItemIdList.ImportanceExtendedProperty.PropertyType) { importance = (string)extendedPropertyType.Item; } else if (string.Compare(extendedPropertyType.ExtendedFieldURI.PropertyName, MailboxItemIdList.IsReadExtendedProperty.PropertyName, StringComparison.OrdinalIgnoreCase) == 0 && extendedPropertyType.ExtendedFieldURI.PropertyType == MailboxItemIdList.IsReadExtendedProperty.PropertyType) { bool.TryParse(extendedPropertyType.Item as string, out isRead); } else if (string.Compare(extendedPropertyType.ExtendedFieldURI.PropertyName, MailboxItemIdList.InternetMessageIdExtendedProperty.PropertyName, StringComparison.OrdinalIgnoreCase) == 0 && extendedPropertyType.ExtendedFieldURI.PropertyType == MailboxItemIdList.InternetMessageIdExtendedProperty.PropertyType) { text = (string)extendedPropertyType.Item; } else if (string.Compare(extendedPropertyType.ExtendedFieldURI.PropertyName, MailboxItemIdList.ConversationTopicExtendedProperty.PropertyName, StringComparison.OrdinalIgnoreCase) == 0 && extendedPropertyType.ExtendedFieldURI.PropertyType == MailboxItemIdList.ConversationTopicExtendedProperty.PropertyType) { text2 = MailboxItemIdList.DecodeDataFromEws((string)extendedPropertyType.Item); } else if (string.Compare(extendedPropertyType.ExtendedFieldURI.PropertyName, MailboxItemIdList.IsSentItemsExtendedProperty.PropertyName, StringComparison.OrdinalIgnoreCase) == 0 && extendedPropertyType.ExtendedFieldURI.PropertyType == MailboxItemIdList.IsSentItemsExtendedProperty.PropertyType) { sentItems = bool.Parse((string)extendedPropertyType.Item); } else if (string.Compare(extendedPropertyType.ExtendedFieldURI.PropertyName, MailboxItemIdList.BodyTagInfoExtendedProperty.PropertyName, StringComparison.OrdinalIgnoreCase) == 0 && extendedPropertyType.ExtendedFieldURI.PropertyType == MailboxItemIdList.BodyTagInfoExtendedProperty.PropertyType) { string s = (string)extendedPropertyType.Item; byte[] byteArray = Convert.FromBase64String(s); btInfo = BodyTagInfo.FromByteArray(byteArray); } } } string uniqueHash = null; if (!string.IsNullOrEmpty(text) && !string.IsNullOrEmpty(text2)) { uniqueHash = new UniqueItemHash(text, text2, btInfo, sentItems).ToString(); } return(new ItemId { Id = id, ParentFolder = parentFolder, PrimaryItemId = primaryItemId, Size = size, Subject = subject, DocumentId = documentId, InternetMessageId = text, Sender = sender, SenderSmtpAddress = senderSmtpAddress, ReceivedTime = minValue, SentTime = minValue2, Importance = importance, IsRead = isRead, UniqueHash = uniqueHash, SourceId = this.sourcePrimarySmtpAddress }); } return(null); }
private ExtendedPropertyType[] CreateItemExtendedPropertyValuesFromItemId(ItemId itemId) { List <ExtendedPropertyType> list = new List <ExtendedPropertyType>(10); if (!string.IsNullOrEmpty(itemId.Id)) { list.Add(new ExtendedPropertyType { ExtendedFieldURI = MailboxItemIdList.ItemIdExtendedProperty, Item = itemId.Id }); } if (!string.IsNullOrEmpty(itemId.ParentFolder)) { list.Add(new ExtendedPropertyType { ExtendedFieldURI = MailboxItemIdList.ParentFolderIdExtendedProperty, Item = itemId.ParentFolder }); } if (!string.IsNullOrEmpty(itemId.PrimaryItemId)) { list.Add(new ExtendedPropertyType { ExtendedFieldURI = MailboxItemIdList.PrimaryItemIdExtendedProperty, Item = itemId.PrimaryItemId }); } if (itemId.Size != 0U) { list.Add(new ExtendedPropertyType { ExtendedFieldURI = MailboxItemIdList.ItemSizeExtendedProperty, Item = itemId.Size.ToString() }); } if (!string.IsNullOrEmpty(itemId.Subject)) { list.Add(new ExtendedPropertyType { ExtendedFieldURI = MailboxItemIdList.SubjectExtendedProperty, Item = MailboxItemIdList.EncodeDataForEws(itemId.Subject) }); } if (itemId.DocumentId != 0) { list.Add(new ExtendedPropertyType { ExtendedFieldURI = MailboxItemIdList.DocumentIdExtendedProperty, Item = itemId.DocumentId.ToString() }); } if (!string.IsNullOrEmpty(itemId.Sender)) { list.Add(new ExtendedPropertyType { ExtendedFieldURI = MailboxItemIdList.SenderExtendedProperty, Item = MailboxItemIdList.EncodeDataForEws(itemId.Sender) }); } if (!string.IsNullOrEmpty(itemId.SenderSmtpAddress)) { list.Add(new ExtendedPropertyType { ExtendedFieldURI = MailboxItemIdList.SenderSmtpAddressExtendedProperty, Item = MailboxItemIdList.EncodeDataForEws(itemId.SenderSmtpAddress) }); } if (itemId.ReceivedTime != DateTime.MinValue) { list.Add(new ExtendedPropertyType { ExtendedFieldURI = MailboxItemIdList.ReceivedTimeExtendedProperty, Item = itemId.ReceivedTime.ToString() }); } if (itemId.SentTime != DateTime.MinValue) { list.Add(new ExtendedPropertyType { ExtendedFieldURI = MailboxItemIdList.SentTimeExtendedProperty, Item = itemId.SentTime.ToString() }); } if (!string.IsNullOrEmpty(itemId.Importance)) { list.Add(new ExtendedPropertyType { ExtendedFieldURI = MailboxItemIdList.ImportanceExtendedProperty, Item = itemId.Importance }); } list.Add(new ExtendedPropertyType { ExtendedFieldURI = MailboxItemIdList.IsReadExtendedProperty, Item = itemId.IsRead.ToString() }); if (!string.IsNullOrEmpty(itemId.UniqueHash)) { UniqueItemHash uniqueItemHash = UniqueItemHash.Parse(itemId.UniqueHash); if (!string.IsNullOrEmpty(uniqueItemHash.InternetMessageId)) { list.Add(new ExtendedPropertyType { ExtendedFieldURI = MailboxItemIdList.InternetMessageIdExtendedProperty, Item = uniqueItemHash.InternetMessageId }); } if (!string.IsNullOrEmpty(uniqueItemHash.ConversationTopic)) { list.Add(new ExtendedPropertyType { ExtendedFieldURI = MailboxItemIdList.ConversationTopicExtendedProperty, Item = MailboxItemIdList.EncodeDataForEws(uniqueItemHash.ConversationTopic) }); } list.Add(new ExtendedPropertyType { ExtendedFieldURI = MailboxItemIdList.IsSentItemsExtendedProperty, Item = uniqueItemHash.IsSentItems.ToString() }); if (uniqueItemHash.BodyTagInfo != null) { byte[] inArray = uniqueItemHash.BodyTagInfo.ToByteArray(); string item = Convert.ToBase64String(inArray); list.Add(new ExtendedPropertyType { ExtendedFieldURI = MailboxItemIdList.BodyTagInfoExtendedProperty, Item = item }); } } return(list.ToArray()); }