private static QueryFilter CreateComparisonFilter(ADPropertyDefinition schemaProperty, string searchFilter) { if (SearchRecipient.IsWildcard(searchFilter)) { string text = searchFilter.Substring(0, searchFilter.Length - 1); return(new TextFilter(schemaProperty, text, MatchOptions.Prefix, MatchFlags.IgnoreCase)); } return(new ComparisonFilter(ComparisonOperator.Equal, schemaProperty, searchFilter)); }
public static QueryFilter GetRecipientTypeSearchFilter(string searchFilter, bool includeGroups = false) { List <QueryFilter> list = new List <QueryFilter>(); if (!string.IsNullOrEmpty(searchFilter) && (!searchFilter.StartsWith("*") || !searchFilter.EndsWith("*") || searchFilter.Length > 2)) { Guid empty = Guid.Empty; if (Guid.TryParse(searchFilter, out empty)) { list.Add(new ComparisonFilter(ComparisonOperator.Equal, ADObjectSchema.Guid, empty)); } else { SmtpAddress smtpAddress = new SmtpAddress(searchFilter); if (smtpAddress.IsValidAddress) { list.Add(new ComparisonFilter(ComparisonOperator.Equal, ADRecipientSchema.EmailAddresses, "SMTP:" + smtpAddress.ToString())); list.Add(new ComparisonFilter(ComparisonOperator.Equal, ADRecipientSchema.ExternalEmailAddress, "SMTP:" + smtpAddress.ToString())); } else { list.Add(SearchRecipient.CreateComparisonFilter(ADUserSchema.UserPrincipalName, searchFilter)); list.Add(SearchRecipient.CreateComparisonFilter(ADRecipientSchema.Alias, searchFilter)); list.Add(SearchRecipient.CreateComparisonFilter(ADUserSchema.FirstName, searchFilter)); list.Add(SearchRecipient.CreateComparisonFilter(ADUserSchema.LastName, searchFilter)); list.Add(SearchRecipient.CreateComparisonFilter(ADRecipientSchema.DisplayName, searchFilter)); } } } QueryFilter queryFilter = SearchRecipient.CombineFilters(SearchRecipient.GetRecipientTypeFilter(includeGroups)); if (list.Count > 0) { queryFilter = QueryFilter.AndTogether(new QueryFilter[] { queryFilter, SearchRecipient.CombineFilters(list) }); } return(queryFilter); }
public static bool IsMembershipGroup(ADRawEntry recipient) { RecipientTypeDetails typeDetails = (RecipientTypeDetails)recipient[ADRecipientSchema.RecipientTypeDetails]; return(SearchRecipient.IsMembershipGroupTypeDetail(typeDetails)); }