Show / Hide Table of Contents

Class ProjectGuideSubProviderBase<RootExtender>

Common base class for the Appointment and Document providers for Project Guide items

Inheritance
Object
ExtensibleColumnsBase
QueryProviderBase<ArchiveRow>
TypedQueryProviderBase<ArchiveRow, RootExtender>
ProjectGuideSubProviderBase<RootExtender>
ProjectGuideAppointmentProvider
ProjectGuideDocumentProvider
Implements
IArchiveProviderQueryMapping
IArchiveQueryProvider
IArchiveProviderExtensible
IArchiveTypedProvider<ArchiveRow>
IArchiveTypedProviderBase
IArchiveProvider
IArchiveProviderHasRows
IArchiveProviderHasColumns
IArchiveProviderHasEntities
Inherited Members
TypedQueryProviderBase<ArchiveRow, RootExtender>.HandleDynamicExtenders(IArchiveExtender)
TypedQueryProviderBase<ArchiveRow, RootExtender>.InnerPopulateRowFromReader(SoDataReader, ArchiveRow)
TypedQueryProviderBase<ArchiveRow, RootExtender>.GetRows(String)
TypedQueryProviderBase<ArchiveRow, RootExtender>.GetStandardColumnNames()
TypedQueryProviderBase<ArchiveRow, RootExtender>.SetAdditionalColumns(String[])
TypedQueryProviderBase<ArchiveRow, RootExtender>.BaseExtender
TypedQueryProviderBase<ArchiveRow, RootExtender>.ProviderNameFromAttribute
TypedQueryProviderBase<ArchiveRow, RootExtender>.RootExtenders
TypedQueryProviderBase<ArchiveRow, RootExtender>.PrimaryTable
TypedQueryProviderBase<ArchiveRow, RootExtender>.Query
QueryProviderBase<ArchiveRow>._colGetAllRows
QueryProviderBase<ArchiveRow>._colGetNoRows
QueryProviderBase<ArchiveRow>._pageSize
QueryProviderBase<ArchiveRow>._pageNumber
QueryProviderBase<ArchiveRow>.InnerSetRestriction(ArchiveRestrictionInfo[])
QueryProviderBase<ArchiveRow>.HandleDynamicExtenders(IArchiveExtender)
QueryProviderBase<ArchiveRow>.GetFinalRowCount()
QueryProviderBase<ArchiveRow>.SetDesiredColumns(String[])
QueryProviderBase<ArchiveRow>.GetAllExtenders()
QueryProviderBase<ArchiveRow>.OverrideValueIfBlank(ArchiveRow, String, String)
QueryProviderBase<ArchiveRow>.AddInhibitedStyleHint(String)
QueryProviderBase<ArchiveRow>.PostProcessRow(SoDataReader, ArchiveRow)
QueryProviderBase<ArchiveRow>.CreateArchiveRow(String, Int32)
QueryProviderBase<ArchiveRow>.Close()
QueryProviderBase<ArchiveRow>.GetReader(String)
QueryProviderBase<ArchiveRow>.GetRows(String)
QueryProviderBase<ArchiveRow>.GetResultInformation()
QueryProviderBase<ArchiveRow>.SetRestriction(ArchiveRestrictionInfo[])
QueryProviderBase<ArchiveRow>.SetOrderBy(ArchiveOrderByInfo[])
QueryProviderBase<ArchiveRow>.GetEntityName(SoDataReader)
QueryProviderBase<ArchiveRow>.SetPagingInfo(Int32, Int32)
QueryProviderBase<ArchiveRow>.ConvertToTypedRows(IEnumerable<ArchiveRow>)
QueryProviderBase<ArchiveRow>.GetAvailableEntities()
QueryProviderBase<ArchiveRow>.SetDesiredEntities(String[])
QueryProviderBase<ArchiveRow>.RegisterEntity(ArchiveRowTypeInfo)
QueryProviderBase<ArchiveRow>.PrimaryKey
QueryProviderBase<ArchiveRow>.InhibitTwoPhaseQuery
QueryProviderBase<ArchiveRow>.DropTablesFromPhaseTwo
QueryProviderBase<ArchiveRow>.RootQuery
QueryProviderBase<ArchiveRow>.OrderBySlots
QueryProviderBase<ArchiveRow>.PrimaryTable
QueryProviderBase<ArchiveRow>.Query
QueryProviderBase<ArchiveRow>.RootExtenders
QueryProviderBase<ArchiveRow>.HaveReadToEnd
QueryProviderBase<ArchiveRow>.ValueOverrides
ExtensibleColumnsBase._minuteFields
ExtensibleColumnsBase.Visible
ExtensibleColumnsBase.Invisible
ExtensibleColumnsBase.AllowOrderBy
ExtensibleColumnsBase.DenyOrderBy
ExtensibleColumnsBase.GetAllRestriction
ExtensibleColumnsBase.GetNoneRestriction
ExtensibleColumnsBase.GetNameOrOverrideName(String)
ExtensibleColumnsBase.SetParent(IArchiveProviderExtensible)
ExtensibleColumnsBase.AddAvailableColumn(ArchiveColumnInfo[])
ExtensibleColumnsBase.GetAvailableColumns()
ExtensibleColumnsBase.SetOrderByMapping(String, String[])
ExtensibleColumnsBase.SetOrderByMapping(ArchiveColumnInfo, ArchiveColumnInfo[])
ExtensibleColumnsBase.SetPrefixes(String, String)
ExtensibleColumnsBase.SetLocalAbsolutePrefixes(String, String)
ExtensibleColumnsBase.SetIconHint(String)
ExtensibleColumnsBase.AddLocalRestriction(ArchiveRestrictionInfo[])
ExtensibleColumnsBase.AddExtensionProvider(IArchiveExtender)
ExtensibleColumnsBase.GetExtensionProviders()
ExtensibleColumnsBase.GetTableInfosFromExtensionProviders()
ExtensibleColumnsBase.PopulateRowFromReader(SoDataReader, ArchiveRow)
ExtensibleColumnsBase.SuppressTableResults(SoDataReader, TableInfo)
ExtensibleColumnsBase.SuppressDeepTableResults(SoDataReader, TableInfo)
ExtensibleColumnsBase.AddColumnNameOverride(String, String)
ExtensibleColumnsBase.ApplyColumnNameOverridesToRestrictions()
ExtensibleColumnsBase.ApplyColumnNameOverrides(ArchiveRow)
ExtensibleColumnsBase.AddSubExtenderMapping(String, ExtensibleColumnsBase[])
ExtensibleColumnsBase.WantColumnForOutput(String[])
ExtensibleColumnsBase.WantColumnForOutput(ArchiveColumnInfo[])
ExtensibleColumnsBase.WantColumnForOutput(List<ArchiveColumnInfo>)
ExtensibleColumnsBase.WantColumnForRestriction(String[])
ExtensibleColumnsBase.WantColumnForRestriction(ArchiveColumnInfo[])
ExtensibleColumnsBase.WantColumnForOrderBy(String[])
ExtensibleColumnsBase.GetColumnOrderBy(String)
ExtensibleColumnsBase.WantColumnForOrderBy(ArchiveColumnInfo[])
ExtensibleColumnsBase.WantColumnForAnything(String[])
ExtensibleColumnsBase.WantColumnForAnything(ArchiveColumnInfo[])
ExtensibleColumnsBase.IsQueryNeeded()
ExtensibleColumnsBase.IsQueryRestriction()
ExtensibleColumnsBase.GetLeftOuterOrInnerJoin(Equal)
ExtensibleColumnsBase.GetLeftOuterOrInnerJoin(Equal, Restriction)
ExtensibleColumnsBase.SetLeftOuterJoin(Equal)
ExtensibleColumnsBase.SetLeftOuterJoin(Equal, Restriction)
ExtensibleColumnsBase.SetLeftOuterOrInnerJoin(Equal)
ExtensibleColumnsBase.SetLeftOuterOrInnerJoin(Equal, Restriction)
ExtensibleColumnsBase.MapReturnField(ArchiveSelect, FieldInfo, Boolean, String, ArchiveColumnInfo[])
ExtensibleColumnsBase.MapIdField(FieldInfo)
ExtensibleColumnsBase.MapAssociateField(FieldInfo, ArchiveColumnInfo, Boolean)
ExtensibleColumnsBase.MapEjUserField(FieldInfo, ArchiveColumnInfo)
ExtensibleColumnsBase.MapSimpleReturnField(FieldInfo, ArchiveColumnInfo[])
ExtensibleColumnsBase.MapSimpleImageField(FieldInfo, ArchiveColumnInfo, Int32, Int32)
ExtensibleColumnsBase.MapPictureBlob(FieldInfo, ArchiveColumnInfo, BlobLinkType, Int32, Int32, Int32)
ExtensibleColumnsBase.MapSimpleCustomField(FieldInfo, ArchiveColumnInfo[])
ExtensibleColumnsBase.MapSimpleListReturnField(FieldInfo, String, ArchiveColumnInfo[])
ExtensibleColumnsBase.MapOrderByField(FieldInfo, ArchiveColumnInfo)
ExtensibleColumnsBase.ActivateAsLinkField(String, ArchiveColumnInfo[])
ExtensibleColumnsBase.HasAvailableColumn(String)
ExtensibleColumnsBase.AddAndInitializeExtensionProvider<ExtenderType>(ExtenderType, String, String)
ExtensibleColumnsBase.AddAndInitializeExtensionProvider<ExtenderType>(ExtenderType)
ExtensibleColumnsBase.HasRestriction(String)
ExtensibleColumnsBase.ExtractRestrictions(String)
ExtensibleColumnsBase.ExtractRestrictions(ArchiveColumnInfo)
ExtensibleColumnsBase.ExtractRestriction(String)
ExtensibleColumnsBase.ExtractRestriction(ArchiveColumnInfo)
ExtensibleColumnsBase.ProcessRestrictions()
ExtensibleColumnsBase.ProcessOrderBy()
ExtensibleColumnsBase.PopulateSimpleFields(SoDataReader, ArchiveRow)
ExtensibleColumnsBase.CalculateOrderbyValue(String, SoDataReader, ArchiveColumnData)
ExtensibleColumnsBase.AddDbInfo(ArchiveColumnData, FieldInfo)
ExtensibleColumnsBase.AddDbInfo(ArchiveColumnData, Int32)
ExtensibleColumnsBase.ForceDisable()
ExtensibleColumnsBase.GetAssociateData(Int32)
ExtensibleColumnsBase.GetEjUserData(Int32)
ExtensibleColumnsBase.GetColumnIndex(ArchiveColumnInfo)
ExtensibleColumnsBase.GetColumnIndexFromReader(SoDataReader, FieldInfo, Int32)
ExtensibleColumnsBase.ConvertDbTypeToString(Object, ExtensibleColumnsBase.DbColumnBinding)
ExtensibleColumnsBase.GetStandardTooltipHint(SoDataReader, FieldInfo)
ExtensibleColumnsBase.GetLinkHint(SoDataReader, String)
ExtensibleColumnsBase.SetNonZeroBoolRestriction(ArchiveColumnInfo)
ExtensibleColumnsBase.AddUpdatedByMapping(ArchiveColumnInfo, FieldInfo, FieldInfo)
ExtensibleColumnsBase.AddRegisteredMapping(ArchiveColumnInfo, FieldInfo, ArchiveColumnInfo, FieldInfo)
ExtensibleColumnsBase.AddLastUpdatedMapping(ArchiveColumnInfo, FieldInfo, FieldInfo)
ExtensibleColumnsBase.AddUpdatedBy(SoDataReader, ArchiveRow, ArchiveColumnInfo, FieldInfo, FieldInfo)
ExtensibleColumnsBase.AddUpdatedDate(SoDataReader, ArchiveRow, ArchiveColumnInfo, FieldInfo, FieldInfo, Boolean)
ExtensibleColumnsBase.AddAssociateFullName(SoDataReader, ArchiveRow, ArchiveColumnInfo, FieldInfo[])
ExtensibleColumnsBase.GetIdFieldTag(SoDataReader)
ExtensibleColumnsBase.GetArchiveColumnName(SoField)
ExtensibleColumnsBase.ExtensibleHelper
ExtensibleColumnsBase.ColumnHelper
ExtensibleColumnsBase.RestrictionHelper
ExtensibleColumnsBase.Parent
ExtensibleColumnsBase.DisableSubtreeIfNoRestriction
ExtensibleColumnsBase.RestrictionSetForSubtree
ExtensibleColumnsBase.ForceQueryNeeded
ExtensibleColumnsBase.ForceRestriction
ExtensibleColumnsBase.BlockOrderBy
ExtensibleColumnsBase.IdField
ExtensibleColumnsBase.LastSubExtenderWins
ExtensibleColumnsBase.ParentPrimaryKey
ExtensibleColumnsBase.QuoteAlternativeId
ExtensibleColumnsBase.SaleId
ExtensibleColumnsBase.NamePrefix
ExtensibleColumnsBase.DisplayNamePrefix
ExtensibleColumnsBase.PopulateDisplayValue
ExtensibleColumnsBase.PopulateTooltipHint
ExtensibleColumnsBase.DebugXML
Namespace: SuperOffice.CRM.ArchiveLists
Assembly: SoDataBase.dll
Syntax
public abstract class ProjectGuideSubProviderBase<RootExtender> : TypedQueryProviderBase<ArchiveRow, RootExtender>, IArchiveProviderQueryMapping, IArchiveQueryProvider, IArchiveProviderExtensible, IArchiveTypedProvider<ArchiveRow>, IArchiveTypedProviderBase, IArchiveProvider, IArchiveProviderHasRows, IArchiveProviderHasColumns, IArchiveProviderHasEntities, IPlugin where RootExtender : IArchiveExtender, new()
Type Parameters
Name Description
RootExtender
Remarks

Most of the actual processing is done by the extenders, which have common base classes for Appointment and Document, and are further subdivided into project and (in the future?) project as the ultimate parent entity. This provider handles the sentry processing, which does not really fit anywhere else.

Part of the sentry processing consists of getting hold of the correct tableinfos that represent the instance information, and then using it to derive the correct rights. Subclasses supply the instances, and this base class then uses it in the calculations.

Constructors

ProjectGuideSubProviderBase(ArchiveRowTypeInfo)

Common base class for the Appointment and Document providers for Project Guide items

Declaration
public ProjectGuideSubProviderBase(ArchiveRowTypeInfo rowType)
Parameters
Type Name Description
ArchiveRowTypeInfo rowType
Remarks

Most of the actual processing is done by the extenders, which have common base classes for Appointment and Document, and are further subdivided into project and (in the future?) project as the ultimate parent entity. This provider handles the sentry processing, which does not really fit anywhere else.

Part of the sentry processing consists of getting hold of the correct tableinfos that represent the instance information, and then using it to derive the correct rights. Subclasses supply the instances, and this base class then uses it in the calculations.

Fields

_colId

Common base class for the Appointment and Document providers for Project Guide items

Declaration
protected ArchiveColumnInfo _colId
Field Value
Type Description
ArchiveColumnInfo
Remarks

Most of the actual processing is done by the extenders, which have common base classes for Appointment and Document, and are further subdivided into project and (in the future?) project as the ultimate parent entity. This provider handles the sentry processing, which does not really fit anywhere else.

Part of the sentry processing consists of getting hold of the correct tableinfos that represent the instance information, and then using it to derive the correct rights. Subclasses supply the instances, and this base class then uses it in the calculations.

OnlyInstanceEntityName

Common base class for the Appointment and Document providers for Project Guide items

Declaration
public const string OnlyInstanceEntityName = "onlyInstance"
Field Value
Type Description
String
Remarks

Most of the actual processing is done by the extenders, which have common base classes for Appointment and Document, and are further subdivided into project and (in the future?) project as the ultimate parent entity. This provider handles the sentry processing, which does not really fit anywhere else.

Part of the sentry processing consists of getting hold of the correct tableinfos that represent the instance information, and then using it to derive the correct rights. Subclasses supply the instances, and this base class then uses it in the calculations.

Properties

InhibitDistinctPrimaryKeys

We change entities on the fly and should not really need to do this??

Declaration
public override bool InhibitDistinctPrimaryKeys { get; }
Property Value
Type Description
Boolean
Overrides
SuperOffice.CRM.ArchiveLists.QueryProviderBase<SuperOffice.CRM.ArchiveLists.ArchiveRow>.InhibitDistinctPrimaryKeys
Remarks

Most of the actual processing is done by the extenders, which have common base classes for Appointment and Document, and are further subdivided into project and (in the future?) project as the ultimate parent entity. This provider handles the sentry processing, which does not really fit anywhere else.

Part of the sentry processing consists of getting hold of the correct tableinfos that represent the instance information, and then using it to derive the correct rights. Subclasses supply the instances, and this base class then uses it in the calculations.

InstanceTable

Get the specific instance table - either appointment or document

Declaration
protected abstract TableInfo InstanceTable { get; }
Property Value
Type Description
TableInfo
Remarks

Most of the actual processing is done by the extenders, which have common base classes for Appointment and Document, and are further subdivided into project and (in the future?) project as the ultimate parent entity. This provider handles the sentry processing, which does not really fit anywhere else.

Part of the sentry processing consists of getting hold of the correct tableinfos that represent the instance information, and then using it to derive the correct rights. Subclasses supply the instances, and this base class then uses it in the calculations.

TableToExtend

Common base class for the Appointment and Document providers for Project Guide items

Declaration
public override TableInfo TableToExtend { get; }
Property Value
Type Description
TableInfo
Overrides
SuperOffice.CRM.ArchiveLists.QueryProviderBase<SuperOffice.CRM.ArchiveLists.ArchiveRow>.TableToExtend
Remarks

Most of the actual processing is done by the extenders, which have common base classes for Appointment and Document, and are further subdivided into project and (in the future?) project as the ultimate parent entity. This provider handles the sentry processing, which does not really fit anywhere else.

Part of the sentry processing consists of getting hold of the correct tableinfos that represent the instance information, and then using it to derive the correct rights. Subclasses supply the instances, and this base class then uses it in the calculations.

Methods

AcceptRow(SoDataReader)

Override: Filter out rows where the stagelinkinfo.deleted != 0, provided they have no instance

Declaration
protected override bool AcceptRow(SoDataReader reader)
Parameters
Type Name Description
SoDataReader reader
Returns
Type Description
Boolean
Overrides
SuperOffice.CRM.ArchiveLists.QueryProviderBase<SuperOffice.CRM.ArchiveLists.ArchiveRow>.AcceptRow(SuperOffice.Data.SoDataReader)
Remarks

Most of the actual processing is done by the extenders, which have common base classes for Appointment and Document, and are further subdivided into project and (in the future?) project as the ultimate parent entity. This provider handles the sentry processing, which does not really fit anywhere else.

Part of the sentry processing consists of getting hold of the correct tableinfos that represent the instance information, and then using it to derive the correct rights. Subclasses supply the instances, and this base class then uses it in the calculations.

GetInsertRight(Int32)

Get the Insert right, based on the current project owner

Declaration
protected abstract TableRight GetInsertRight(int ownerAssociate)
Parameters
Type Name Description
Int32 ownerAssociate

owner associate to use

Returns
Type Description
TableRight
Remarks

The business rules state that new instances are created on behalf of the user who owns the project, not the current user. We therefore need to determine if the current user is allowed to insert something owned by the project owner.

GetInstanceAppointment()

Get the appointment instance table

Declaration
protected AppointmentTableInfo GetInstanceAppointment()
Returns
Type Description
AppointmentTableInfo
Remarks

This method is placed here because both the appointment and the document subclasses use it (remember appointment->document)

HasInstance(SoDataReader)

Common base class for the Appointment and Document providers for Project Guide items

Declaration
protected bool HasInstance(SoDataReader reader)
Parameters
Type Name Description
SoDataReader reader
Returns
Type Description
Boolean
Remarks

Most of the actual processing is done by the extenders, which have common base classes for Appointment and Document, and are further subdivided into project and (in the future?) project as the ultimate parent entity. This provider handles the sentry processing, which does not really fit anywhere else.

Part of the sentry processing consists of getting hold of the correct tableinfos that represent the instance information, and then using it to derive the correct rights. Subclasses supply the instances, and this base class then uses it in the calculations.

InnerMapFields()

Override: Make sure we have the project associate ID field, and map the project id

Declaration
public override void InnerMapFields()
Overrides
SuperOffice.CRM.ArchiveLists.QueryProviderBase<SuperOffice.CRM.ArchiveLists.ArchiveRow>.InnerMapFields()
Remarks

Most of the actual processing is done by the extenders, which have common base classes for Appointment and Document, and are further subdivided into project and (in the future?) project as the ultimate parent entity. This provider handles the sentry processing, which does not really fit anywhere else.

Part of the sentry processing consists of getting hold of the correct tableinfos that represent the instance information, and then using it to derive the correct rights. Subclasses supply the instances, and this base class then uses it in the calculations.

InnerPopulateRowFromReader(SoDataReader, ArchiveRow)

Override: Use the instance table and insert rights from the subclass to calculate the correct table rights.

Declaration
protected override void InnerPopulateRowFromReader(SoDataReader reader, ArchiveRow row)
Parameters
Type Name Description
SoDataReader reader
ArchiveRow row
Overrides
SuperOffice.CRM.ArchiveLists.TypedQueryProviderBase<SuperOffice.CRM.ArchiveLists.ArchiveRow, RootExtender>.InnerPopulateRowFromReader(SuperOffice.Data.SoDataReader, SuperOffice.CRM.ArchiveLists.ArchiveRow)
Remarks

The Insert part of the table right is based on the relationship between the current user and the project owner. The Read/Update/Delete part is based on the actual instance, if any. New-instance rights are cached per project owner to make it go faster.

PostProcessQuery()

Common base class for the Appointment and Document providers for Project Guide items

Declaration
public override void PostProcessQuery()
Overrides
SuperOffice.CRM.ArchiveLists.QueryProviderBase<SuperOffice.CRM.ArchiveLists.ArchiveRow>.PostProcessQuery()
Remarks

Most of the actual processing is done by the extenders, which have common base classes for Appointment and Document, and are further subdivided into project and (in the future?) project as the ultimate parent entity. This provider handles the sentry processing, which does not really fit anywhere else.

Part of the sentry processing consists of getting hold of the correct tableinfos that represent the instance information, and then using it to derive the correct rights. Subclasses supply the instances, and this base class then uses it in the calculations.

RequiredPhaseOneFields()

Make sure the fields we need in AcceptRow are always present in the phase-one version of the query

Declaration
protected override FieldInfo[] RequiredPhaseOneFields()
Returns
Type Description
FieldInfo[]
Overrides
SuperOffice.CRM.ArchiveLists.QueryProviderBase<SuperOffice.CRM.ArchiveLists.ArchiveRow>.RequiredPhaseOneFields()
Remarks

Most of the actual processing is done by the extenders, which have common base classes for Appointment and Document, and are further subdivided into project and (in the future?) project as the ultimate parent entity. This provider handles the sentry processing, which does not really fit anywhere else.

Part of the sentry processing consists of getting hold of the correct tableinfos that represent the instance information, and then using it to derive the correct rights. Subclasses supply the instances, and this base class then uses it in the calculations.

Implements

IArchiveProviderQueryMapping
IArchiveQueryProvider
IArchiveProviderExtensible
IArchiveTypedProvider<StronglyTypedRow>
IArchiveTypedProviderBase
IArchiveProvider
IArchiveProviderHasRows
IArchiveProviderHasColumns
IArchiveProviderHasEntities

Extension Methods

EnumUtil.MapEnums<From, To>(From)
Converters.MapEnums<From, To>(From)
© SuperOffice. All rights reserved.
SuperOffice |  Community |  Release Notes |  Privacy |  Site feedback |  Search Docs |  About Docs |  Contribute |  Back to top