Single provider channel for the Participants archives. This channel represents Persons (that are not associates in any way), specified by explicit id (not indirectly through a reference to a booking row in appointment, see the BookingParticipantsExternalPersonProvider for this counterpart).
public sealed class ExplicitParticipantsExternalPersonProvider : ParticipantsExternalPersonProvider, IArchiveProviderQueryMapping, IArchiveQueryProvider, IArchiveProviderExtensible, IArchiveProvider, IArchiveProviderHasRows, IArchiveProviderHasColumns, IArchiveProviderHasEntities, IPlugin
Override: Use helper to populate custom elements of the row
protected override void InnerPopulateRowFromReader(SoDataReader reader, ArchiveRow row)
Process the special restrictions, and modify the query appropriately. Here we handle the case where an appointment restriction has been specified, and we need to set up the appointment query. If, instead, a list of person id's has been provided, that is picked up in ProcessRestrictions() at an earlier stage.
public override void PostProcessQuery()
This can't be done through ProcessRestrictions, since that would be too early - the extenders are not initialized at that time and we can't ask them about things like TableToExtend. PostProcessQuery is called late in the process leading up to query execution, so everything is in place.
Process restrictions to locate an ExternalPersonRestriction - this would indicate that we want to get the given invited persons, instead of reading appointment records from the database and using those as the source of invited person id's.
protected override bool ProcessRestrictions()