This is the provider used when searching for potential new members of a static selection. It is actually just a facade for the FindContactProvider, but a different name is required to avoid stepping on stored findcontact queries for the same user. Before using this provider, please read the Remarks section and make sure you understand its special functionality.
[ArchiveProvider("SelectionStaticContactAddMembers", 1073741823)] public class SelectionAddMembersProvider : SelectionCombinedContactProviderBase<SelectionAddStaticContactMemberExtender>, IArchiveProviderQueryMapping, IArchiveQueryProvider, IArchiveProviderExtensible, IArchiveCombinedContactPersonProvider, IArchiveProvider, IArchiveProviderHasRows, IArchiveProviderHasColumns, IArchiveProviderHasEntities, IPlugin
There are several 'special' restrictions that are used by this provider in order to implement the various irregular query modifiers used by the Add Members dialog.
- includeContactWithStopRestrictionIf this boolean restriction is included and set to 0, then contacts that have the Xstop property set to a nonzero value will not NOT be included. If it is set to 1 or not set at all, such contacts WILL be included.
- includeContactWithNoDMRestrictionIf this boolean restriction is included and set to 0, then contacts that have the Nomailing property set to a nonzero value will not NOT be included. If it is set to 1 or not set at all, such contacts WILL be included.
- includePersonWithNoDMRestrictionIf this boolean restriction is included and set to 0,
then persons that have the Nomailing property set to a nonzero
value will not NOT be included. If it is set to 1 or not set at all, such persons WILL be included.
Note that this restriction will by itself NOT trigger a person search; a genuine person-type restriction has to be present to do that.
- includePersonRestrictionThis restriction, if included, can have one of three distinct string values. The strings correspond to the values of the SelectionContactPersonExtender.IncludePersonType enumeration (parsing is not case sensitive). The value 'none' means that person records should not be included unless an explicit person criterion has been specified. 'first' means that the lowest-ranked person of each found contact should be included, but the result set still uses the contact_id as the primary key and is not a person search (again, unless other person criteria have been used). The value 'all' indicates that the query is promoted from contact to person type, the primary key becomes the person id, and ALL non-retired persons are included in the result for each contact.
- retiredThis is an ordinary display column and restriction. However, in this context it defaults to having a zero restriction value, i.e., unless you explicitly specify this restriction, it will be internally set to 0, thereby eliminating retired persons from the result. If you set it, your value wins, whatever it is.
- selectionIdRequestIf you include the 'selectionIdRequest' restriction, use the '=' operator and give the id of the static selection to attempt to join with. If this is done, then the 'selectionMemberId' will contain a non-null value for those contacts or persons that exist in the given static selection.
public const string ProviderName = "SelectionStaticContactAddMembers"