Show / Hide Table of Contents

Class SaleGuideSubProviderBase<RootExtender>

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

Inheritance
object
ExtensibleColumnsBase
QueryProviderBase<ArchiveRow>
TypedQueryProviderBase<ArchiveRow, RootExtender>
SaleGuideSubProviderBase<RootExtender>
SaleGuideAppointmentProvider
SaleGuideDocumentProvider
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>.GetRowsAsync(string, CancellationToken)
TypedQueryProviderBase<ArchiveRow, RootExtender>.GetStandardColumnNames()
TypedQueryProviderBase<ArchiveRow, RootExtender>.SetAdditionalColumns(params 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(params string[])
QueryProviderBase<ArchiveRow>.GetAllExtenders()
QueryProviderBase<ArchiveRow>.OverrideValueIfBlank(ArchiveRow, string, string)
QueryProviderBase<ArchiveRow>.AddInhibitedStyleHint(string)
QueryProviderBase<ArchiveRow>.PostProcessRow(SoDataReader, ArchiveRow)
QueryProviderBase<ArchiveRow>.CreateArchiveRow(string, int)
QueryProviderBase<ArchiveRow>.Close()
QueryProviderBase<ArchiveRow>.GetReaderAsync(string, CancellationToken)
QueryProviderBase<ArchiveRow>.GetRowsAsync(string, CancellationToken)
QueryProviderBase<ArchiveRow>.GetResultInformationAsync()
QueryProviderBase<ArchiveRow>.SetRestriction(params ArchiveRestrictionInfo[])
QueryProviderBase<ArchiveRow>.SetOrderBy(ArchiveOrderByInfo[])
QueryProviderBase<ArchiveRow>.GetEntityName(SoDataReader)
QueryProviderBase<ArchiveRow>.SetPagingInfo(int, int)
QueryProviderBase<ArchiveRow>.ConvertToTypedRowsAsync(IAsyncEnumerable<ArchiveRow>)
QueryProviderBase<ArchiveRow>.GetAvailableEntities()
QueryProviderBase<ArchiveRow>.SetDesiredEntities(params 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(params ArchiveColumnInfo[])
ExtensibleColumnsBase.GetAvailableColumns()
ExtensibleColumnsBase.SetOrderByMapping(string, params string[])
ExtensibleColumnsBase.SetOrderByMapping(ArchiveColumnInfo, params ArchiveColumnInfo[])
ExtensibleColumnsBase.SetPrefixes(string, string)
ExtensibleColumnsBase.SetLocalAbsolutePrefixes(string, string)
ExtensibleColumnsBase.SetIconHint(string)
ExtensibleColumnsBase.AddLocalRestriction(params ArchiveRestrictionInfo[])
ExtensibleColumnsBase.AddExtensionProvider(IArchiveExtender)
ExtensibleColumnsBase.GetExtensionProviders()
ExtensibleColumnsBase.GetTableInfosFromExtensionProviders()
ExtensibleColumnsBase.PopulateRowFromReaderAsync(SoDataReader, ArchiveRow, CancellationToken)
ExtensibleColumnsBase.SuppressTableResults(SoDataReader, TableInfo)
ExtensibleColumnsBase.SuppressDeepTableResults(SoDataReader, TableInfo)
ExtensibleColumnsBase.AddColumnNameOverride(string, string)
ExtensibleColumnsBase.ApplyColumnNameOverridesToRestrictions()
ExtensibleColumnsBase.ApplyColumnNameOverrides(ArchiveRow)
ExtensibleColumnsBase.AddSubExtenderMapping(string, params ExtensibleColumnsBase[])
ExtensibleColumnsBase.WantColumnForOutput(params string[])
ExtensibleColumnsBase.WantColumnForOutput(params ArchiveColumnInfo[])
ExtensibleColumnsBase.WantColumnForOutput(List<ArchiveColumnInfo>)
ExtensibleColumnsBase.WantColumnForRestriction(params string[])
ExtensibleColumnsBase.WantColumnForRestriction(params ArchiveColumnInfo[])
ExtensibleColumnsBase.WantColumnForOrderBy(params string[])
ExtensibleColumnsBase.GetColumnOrderBy(string)
ExtensibleColumnsBase.WantColumnForOrderBy(params ArchiveColumnInfo[])
ExtensibleColumnsBase.WantColumnForAnything(params string[])
ExtensibleColumnsBase.WantColumnForAnything(params 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, bool, string, params ArchiveColumnInfo[])
ExtensibleColumnsBase.MapIdField(FieldInfo)
ExtensibleColumnsBase.MapAssociateField(FieldInfo, ArchiveColumnInfo, bool)
ExtensibleColumnsBase.MapEjUserField(FieldInfo, ArchiveColumnInfo)
ExtensibleColumnsBase.MapSimpleReturnField(FieldInfo, params ArchiveColumnInfo[])
ExtensibleColumnsBase.MapSimpleImageField(FieldInfo, ArchiveColumnInfo, int, int)
ExtensibleColumnsBase.MapPictureBlob(FieldInfo, ArchiveColumnInfo, BlobLinkType, int, int, int)
ExtensibleColumnsBase.MapSimpleCustomField(FieldInfo, params ArchiveColumnInfo[])
ExtensibleColumnsBase.MapSimpleListReturnField(FieldInfo, string, params ArchiveColumnInfo[])
ExtensibleColumnsBase.MapOrderByField(FieldInfo, ArchiveColumnInfo)
ExtensibleColumnsBase.ActivateAsLinkField(string, params 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.PopulateSimpleFieldsAsync(SoDataReader, ArchiveRow, CancellationToken)
ExtensibleColumnsBase.CalculateOrderbyValue(string, SoDataReader, ArchiveColumnData)
ExtensibleColumnsBase.AddDbInfo(ArchiveColumnData, FieldInfo)
ExtensibleColumnsBase.AddDbInfo(ArchiveColumnData, int)
ExtensibleColumnsBase.ForceDisable()
ExtensibleColumnsBase.GetAssociateData(int)
ExtensibleColumnsBase.GetEjUserData(int)
ExtensibleColumnsBase.GetColumnIndex(ArchiveColumnInfo)
ExtensibleColumnsBase.GetColumnIndexFromReader(SoDataReader, FieldInfo, ref int)
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, bool)
ExtensibleColumnsBase.AddAssociateFullName(SoDataReader, ArchiveRow, ArchiveColumnInfo, params 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
object.ToString()
object.Equals(object)
object.Equals(object, object)
object.ReferenceEquals(object, object)
object.GetHashCode()
object.GetType()
object.MemberwiseClone()
Namespace: SuperOffice.CRM.ArchiveLists
Assembly: SoDataBase.BusinessLogic.dll
Syntax
public abstract class SaleGuideSubProviderBase<RootExtender> : TypedQueryProviderBase<ArchiveRow, RootExtender>, IArchiveProviderQueryMapping, IArchiveQueryProvider, IArchiveProviderExtensible, IArchiveTypedProvider<ArchiveRow>, IArchiveTypedProviderBase, IArchiveProvider, IArchiveProviderHasRows, IArchiveProviderHasColumns, IArchiveProviderHasEntities 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 sale 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

SaleGuideSubProviderBase(ArchiveRowTypeInfo)

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

Declaration
public SaleGuideSubProviderBase(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 sale 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 Sale 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 sale 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
bool
Overrides
QueryProviderBase<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 sale 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 sale 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

The primary table of this archive provider

Declaration
public override TableInfo TableToExtend { get; }
Property Value
Type Description
TableInfo
Overrides
QueryProviderBase<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 sale 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
bool
Overrides
QueryProviderBase<ArchiveRow>.AcceptRow(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 sale 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(int)

Get the Insert right, based on the current sale owner

Declaration
protected abstract TableRight GetInsertRight(int ownerAssociate)
Parameters
Type Name Description
int 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 sale, not the current user. We therefore need to determine if the current user is allowed to insert something owned by the sale 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)

InnerMapFieldsAsync(CancellationToken)

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

Declaration
public override Task InnerMapFieldsAsync(CancellationToken cancellationToken = default)
Parameters
Type Name Description
CancellationToken cancellationToken
Returns
Type Description
Task
Overrides
QueryProviderBase<ArchiveRow>.InnerMapFieldsAsync(CancellationToken)
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 sale 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
TypedQueryProviderBase<ArchiveRow, RootExtender>.InnerPopulateRowFromReader(SoDataReader, ArchiveRow)
Remarks

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

PostProcessQuery()

This method is called after ModifyQuery has been called on all extenders, but before the query is executed. It is used for processing that needs the query to be 'complete' from the extenders, and gives the opportunity to tweak it, for instance by adding return fields needed for some particular functionality.

Declaration
public override void PostProcessQuery()
Overrides
QueryProviderBase<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 sale 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 alway present in the phase-one version of the query

Declaration
protected override FieldInfo[] RequiredPhaseOneFields()
Returns
Type Description
FieldInfo[]
Overrides
QueryProviderBase<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 sale 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

IArchiverProviderHasRowsExtensions.GetRowsAsync(IArchiveProviderHasRows, CancellationToken)
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