Class ContactInterestExtender
Extender for contact interests
Inheritance
Implements
Inherited Members
Namespace: SuperOffice.CRM.ArchiveLists
Assembly: SoDataBase.dll
Syntax
public class ContactInterestExtender : TableExtenderBase<ContactInterestTableInfo>, IArchiveProviderQueryMapping, IArchiveExtender, IArchiveProviderDoesExtend, IArchiveProviderHasColumns, IArchiveProviderExtensible
Remarks
This extender, like PersonInterestExtender, is of type ListAll which means that you can have 'allOf' as an operator on its single restriction, the interest id. The result is that you can search for contact that have all of a set of interests. In practice this requires one join per interest, since there is a many-many relationship between contact and interest.
The actual multiple-join logic is in CreateListAllRestriction(ArchiveRestrictionInfo, ArchiveSelect, FieldInfo, FieldInfo, FieldInfo). Here we simply intercept the restriction handling in the usual way and route it there for further processing, passing in the fieldinfos needed to get the correct joins an where clauses.Fields
_colInterestIds
Extender for contact interests
Declaration
protected ArchiveColumnInfo _colInterestIds
Field Value
Type | Description |
---|---|
ArchiveColumnInfo |
Remarks
This extender, like PersonInterestExtender, is of type ListAll which means that you can have 'allOf' as an operator on its single restriction, the interest id. The result is that you can search for contact that have all of a set of interests. In practice this requires one join per interest, since there is a many-many relationship between contact and interest.
The actual multiple-join logic is in CreateListAllRestriction(ArchiveRestrictionInfo, ArchiveSelect, FieldInfo, FieldInfo, FieldInfo). Here we simply intercept the restriction handling in the usual way and route it there for further processing, passing in the fieldinfos needed to get the correct joins an where clauses.Methods
InnerModifyQuery()
Map a simple return field to the first joined instance of contactinterest, and set up the restriction processing
Declaration
protected override void InnerModifyQuery()
Overrides
Remarks
This extender, like PersonInterestExtender, is of type ListAll which means that you can have 'allOf' as an operator on its single restriction, the interest id. The result is that you can search for contact that have all of a set of interests. In practice this requires one join per interest, since there is a many-many relationship between contact and interest.
The actual multiple-join logic is in CreateListAllRestriction(ArchiveRestrictionInfo, ArchiveSelect, FieldInfo, FieldInfo, FieldInfo). Here we simply intercept the restriction handling in the usual way and route it there for further processing, passing in the fieldinfos needed to get the correct joins an where clauses.InnerPopulateRowFromReader(SoDataReader, ArchiveRow)
Empty - contactInterestId column contains one of the contact interest ids set on the contact.
Declaration
protected override void InnerPopulateRowFromReader(SoDataReader reader, ArchiveRow row)
Parameters
Type | Name | Description |
---|---|---|
SoDataReader | reader | |
ArchiveRow | row |
Overrides
Remarks
This extender, like PersonInterestExtender, is of type ListAll which means that you can have 'allOf' as an operator on its single restriction, the interest id. The result is that you can search for contact that have all of a set of interests. In practice this requires one join per interest, since there is a many-many relationship between contact and interest.
The actual multiple-join logic is in CreateListAllRestriction(ArchiveRestrictionInfo, ArchiveSelect, FieldInfo, FieldInfo, FieldInfo). Here we simply intercept the restriction handling in the usual way and route it there for further processing, passing in the fieldinfos needed to get the correct joins an where clauses.SetJoin()
Generate the (first) join between our parent contact table and our own contactinterest table; keep track of the parent contact primary key field
Declaration
protected override ContactInterestTableInfo SetJoin()
Returns
Type | Description |
---|---|
ContactInterestTableInfo |
Overrides
Remarks
This extender, like PersonInterestExtender, is of type ListAll which means that you can have 'allOf' as an operator on its single restriction, the interest id. The result is that you can search for contact that have all of a set of interests. In practice this requires one join per interest, since there is a many-many relationship between contact and interest.
The actual multiple-join logic is in CreateListAllRestriction(ArchiveRestrictionInfo, ArchiveSelect, FieldInfo, FieldInfo, FieldInfo). Here we simply intercept the restriction handling in the usual way and route it there for further processing, passing in the fieldinfos needed to get the correct joins an where clauses.