internal ConversationMembersQueryResult(MapiTable mapiTable, ICollection <PropertyDefinition> propertyDefinitions, IList <PropTag> alteredProperties, StoreSession session, bool isTableOwned, SortOrder sortOrder, AggregationExtension aggregationExtension) : base(mapiTable, PropertyDefinitionCollection.Merge <PropertyDefinition>(propertyDefinitions, ConversationMembersQueryResult.RequiredProperties), alteredProperties, session, isTableOwned, sortOrder) { this.originalProperties = propertyDefinitions; this.aggregationExtension = aggregationExtension; }
internal QueryResult InternalItemQuery(ContentsTableFlags flags, QueryFilter queryFilter, SortBy[] sortColumns, QueryExclusionType queryExclusionType, ICollection <PropertyDefinition> dataColumns, AggregationExtension aggregationExtension) { Util.ThrowOnNullArgument(dataColumns, "dataColumns"); if ((flags & ContentsTableFlags.ExpandedConversationView) == ContentsTableFlags.ExpandedConversationView) { if ((flags & ContentsTableFlags.ShowConversations) != ContentsTableFlags.ShowConversations) { throw new ArgumentException("flags", "ContentsTableFlags.ExpandedConversationView requires ContentsTableFlags.ShowConversations"); } foreach (PropertyDefinition propertyDefinition in dataColumns) { if (!(propertyDefinition is ApplicationAggregatedProperty)) { throw new ArgumentException("dataColumns", "All columns must be ApplicationAggregatedProperty. Offending dataColumn: " + propertyDefinition.Name + ":" + propertyDefinition.GetType().Name); } } } flags |= ContentsTableFlags.DeferredErrors; MapiTable mapiTable = this.GetContentsTable(flags); QueryResult queryResult = null; bool flag = false; QueryResult result; try { MailboxSession mailboxSession = this.Session as MailboxSession; if (mailboxSession != null && mailboxSession.FilterPrivateItems && queryExclusionType == QueryExclusionType.Row) { if (queryFilter != null) { queryFilter = new AndFilter(true, new QueryFilter[] { QueryExecutor.privateItemsFilter, queryFilter }); } else if ((flags & ContentsTableFlags.ShowSoftDeletes) != ContentsTableFlags.ShowSoftDeletes) { queryFilter = QueryExecutor.privateItemsFilter; } } if ((flags & ContentsTableFlags.ExpandedConversationView) == ContentsTableFlags.ExpandedConversationView) { queryResult = this.CreateConversationMembersQueryResult(mapiTable, queryFilter, sortColumns, dataColumns, aggregationExtension); } else { queryResult = this.CreateQueryResult(mapiTable, queryFilter, sortColumns, dataColumns); } if (this.Session != null) { this.Session.MessagesWereDownloaded = true; } flag = true; result = queryResult; } finally { if (!flag) { if (queryResult != null) { queryResult.Dispose(); queryResult = null; } if (mapiTable != null) { mapiTable.Dispose(); mapiTable = null; } } } return(result); }
private QueryResult CreateConversationMembersQueryResult(MapiTable mapiTable, QueryFilter queryFilter, SortBy[] sortColumns, ICollection <PropertyDefinition> dataColumns, AggregationExtension aggregationExtension) { List <PropTag> alteredProperties = null; this.SetTableFilter(mapiTable, queryFilter); SortOrder sortOrder = this.GetSortOrder(mapiTable, sortColumns, null, 0, ref alteredProperties); return(new ConversationMembersQueryResult(mapiTable, dataColumns, alteredProperties, this.Session, true, sortOrder, aggregationExtension)); }
public virtual IQueryResult PersonItemQuery(QueryFilter queryFilter, QueryFilter aggregationFilter, SortBy[] sortColumns, ICollection <PropertyDefinition> dataColumns, AggregationExtension aggregationExtension) { throw new NotImplementedException(); }