Class AppointmentNotificationProvider
Inheritance
AppointmentNotificationProvider
Assembly: SoDataBase.dll
Syntax
[ArchiveProvider("AppointmentNotification", 1073741823)]
public class AppointmentNotificationProvider : InMemoryProviderBase<ArchiveRow>, IArchiveProvider, IArchiveProviderHasRows, IArchiveProviderHasColumns, IArchiveProviderHasEntities
Constructors
AppointmentNotificationProvider()
Declaration
public AppointmentNotificationProvider()
Fields
C_APPOINTMENT_ACCEPTED_ENTITY_NAME
Declaration
public const string C_APPOINTMENT_ACCEPTED_ENTITY_NAME = "appointmentAccepted"
Field Value
C_APPOINTMENT_CANCELLED_ENTITY_NAME
Declaration
public const string C_APPOINTMENT_CANCELLED_ENTITY_NAME = "appointmentCancelled"
Field Value
C_APPOINTMENT_HIDDEN_ENTITY_NAME
Declaration
public const string C_APPOINTMENT_HIDDEN_ENTITY_NAME = "appointmentHidden"
Field Value
C_APPOINTMENT_NEW_ENTITY_NAME
Declaration
public const string C_APPOINTMENT_NEW_ENTITY_NAME = "appointmentNew"
Field Value
C_APPOINTMENT_REJECTED_BY_ASSOCIATE_ENTITY_NAME
Declaration
public const string C_APPOINTMENT_REJECTED_BY_ASSOCIATE_ENTITY_NAME = "appointmentRejectedByAssociate"
Field Value
C_APPOINTMENT_REJECTED_ENTITY_NAME
Declaration
public const string C_APPOINTMENT_REJECTED_ENTITY_NAME = "appointmentRejected"
Field Value
C_APPOINTMENT_UPDATED_ENTITY_NAME
Declaration
public const string C_APPOINTMENT_UPDATED_ENTITY_NAME = "appointmentUpdated"
Field Value
ProviderName
Declaration
public const string ProviderName = "AppointmentNotification"
Field Value
Properties
AddConflicts
Declaration
protected bool AddConflicts { get; set; }
Property Value
BaseClassShouldFilterColumns
Subclass contract: Return true if the base class should filter columns according to SetDesiredColumns. If this property is false,
the actual ArchiveRow objects are returned; otherwise a typed copy is made and ColumnData are populated accoprding to DesiredColumns.
Declaration
protected override bool BaseClassShouldFilterColumns { get; }
Property Value
Overrides
Remarks
BaseClassShouldFilterEntities
Subclass contract: Return true if the base class should filter columns according to SetDesiredColumns. If this property is false,
the actual ArchiveRow objects are returned; otherwise a typed copy is made and ColumnData are populated accoprding to DesiredColumns.
Declaration
protected override bool BaseClassShouldFilterEntities { get; }
Property Value
Overrides
BaseClassShouldPage
Subclass contract: Return true if the base class should perform filter entities according to SetDesiredEntities. If this property is false,
the result set is assumed to represent the chosen entities only.
Declaration
protected override bool BaseClassShouldPage { get; }
Property Value
Overrides
BaseClassShouldSort
Subclass contract: Return true if the base class should perform sorting according to SetOrderBy. If this property is false,
the result set is assumed to be correctly ordered.
Declaration
protected override bool BaseClassShouldSort { get; }
Property Value
Overrides
Methods
AddConflictColumnValue(List<ArchiveRow>)
Declaration
protected List<ArchiveRow> AddConflictColumnValue(List<ArchiveRow> rows)
Parameters
Returns
Close()
Call this method after the last desired row has been read; this gives the provider the chance
to close and free any underlying queries
Declaration
public override void Close()
Overrides
CreateRowHistory(ArchiveRow)
Generate a RowHistory object for the provided row.
Declaration
protected AppointmentNotificationProvider.RowHistory CreateRowHistory(ArchiveRow row)
Parameters
Returns
FilterRecurringRows(List<ArchiveRow>)
We want to show as few notifications for appointments in a recurring series as possible, so we try to mitigate as many as we can by following these rules:
1. If an appointment is the first in its recurring series, we keep it.
2. If an appointment is of a different type than the previous in the series (C_APPOINTMENT_NEW_ENTITY_NAME, C_APPOINTMENT_CANCELLED_ENTITY_NAME etc.), we keep it.
3. If an appointment has a time that diverges from already seen times.
4. If an appointment has a ModifiedAppointmentFields flag-combination that diverges from already seen rows.
5. If an appointment has a notifyDateTime (registered or updated datetime) that diverges from already seen rows.
In addition, we add the RecurrenceUpdateMode that we think is appropriate for the notification based on our analysis of the appointment.
The rule is simple:
- If the next appointment in the series is of the same type, we assume the change that caused it was of the forward-propagating variety.
Remove all recurring appointments of the same series, except for divergent appointments in the series.
Declaration
protected List<ArchiveRow> FilterRecurringRows(List<ArchiveRow> rows)
Parameters
Returns
GetAvailableColumns()
Get the list of columns handled by this provider
Declaration
public override List<ArchiveColumnInfo> GetAvailableColumns()
Returns
Overrides
GetAvailableEntities()
Get the list of entities supported by this provider
Declaration
public override List<ArchiveRowTypeInfo> GetAvailableEntities()
Returns
Overrides
GetResultData()
Subclass contract: Return a list of ArchiveRow items that are the current result
Declaration
protected override List<ArchiveRow> GetResultData()
Returns
Type |
Description |
List<ArchiveRow> |
result list, which may be paged, sorted and column-filtered, or not, according to the abstract properties
|
Overrides
SetDesiredColumns(params string[])
Set which columns should actually be returned, must be a subset of the GetAvailableColumns result
Declaration
public override void SetDesiredColumns(params string[] columnIds)
Parameters
Type |
Name |
Description |
string[] |
columnIds |
Array of column ID's representing the desired columns
|
Overrides
SetDesiredEntities(params string[])
Declaration
public override void SetDesiredEntities(params string[] entities)
Parameters
Type |
Name |
Description |
string[] |
entities |
Array of entity names, semantically equivalent to ArchiveEntityInfo.Name fields.
|
Overrides
SetOrderBy(params ArchiveOrderByInfo[])
Declaration
public override void SetOrderBy(params ArchiveOrderByInfo[] orderBy)
Parameters
Overrides
SetPagingInfo(int, int)
Set the paging properties of the provider. The default is to fetch page zero, of one thousand (1000) rows. A more reasonable page size
is probably around 100. Note that the query processing strategy may change for very large pages (more than 1000) and give significantly
longer response times. Performance is improved by setting the page size low, as long as you don't set it lower than what you
realistically expect to need (fetching multiple pages is more expensive than fetching one).
Declaration
public override void SetPagingInfo(int pageSize, int pageNumber)
Parameters
Type |
Name |
Description |
int |
pageSize |
Desired page size
|
int |
pageNumber |
Desired page number to return
|
Overrides
SetRestriction(params ArchiveRestrictionInfo[])
Set query restriction globally, supersedes previous restrictions
Declaration
public override bool SetRestriction(params ArchiveRestrictionInfo[] restrictions)
Parameters
Type |
Name |
Description |
ArchiveRestrictionInfo[] |
restrictions |
Array of restrictions, with an implicit AND between them
|
Returns
Type |
Description |
bool |
true if at least one of the restrictions matched one of the available columns of the provider
|
Overrides
Implements
Extension Methods