Show / Hide Table of Contents

Class MailingsHistoryExtender

Extends the Mailings (s_shipment) provider with the current user's recently-visited history. Composed into MailingsExtenderBase via MailingsExtenderBase.Features.History, but it stays dormant — no join, no return field — until the ColHistoryRank column is actually requested (output, restriction or order-by). So the shared mailings lists (activity archives etc.) are unaffected, and only a caller that opts in (the "Recent" tab) pays for it.

The join is to the History table on record_id = shipment_id, restricted to the same (table_id, associate_id, extra_id) key the History business logic uses (see SuperOffice.Services.Implementation.HistoryImplementation GetHistorySelect). When the caller restricts on ColHistoryRank — as the Recent tab does — the join becomes an INNER join, so only recently-visited mailings are returned; otherwise it's a left-outer join that simply annotates each mailing with its rank (1 = most recent).

Inheritance
object
ExtensibleColumnsBase
ExtenderBase<HistoryTableInfo>
TableExtenderBase<HistoryTableInfo>
MailingsHistoryExtender
Implements
IArchiveProviderQueryMapping
IArchiveExtender
IArchiveProviderDoesExtend
IArchiveProviderHasColumns
IArchiveProviderExtensible
Inherited Members
TableExtenderBase<HistoryTableInfo>._ourTable
TableExtenderBase<HistoryTableInfo>.ModifyQuery()
TableExtenderBase<HistoryTableInfo>.InnerPopulateRowFromReader(SoDataReader, ArchiveRow)
TableExtenderBase<HistoryTableInfo>.TableToExtend
TableExtenderBase<HistoryTableInfo>.MainTableName
ExtenderBase<HistoryTableInfo>.GetRankRestriction(FieldInfo)
ExtenderBase<HistoryTableInfo>.StyleHintPrefix
ExtensibleColumnsBase._orderBy
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.SetDesiredColumns(params string[])
ExtensibleColumnsBase.SetOrderBy(ArchiveOrderByInfo[])
ExtensibleColumnsBase.SetOrderByMapping(string, params string[])
ExtensibleColumnsBase.SetOrderByMapping(ArchiveColumnInfo, params ArchiveColumnInfo[])
ExtensibleColumnsBase.SetPrefixes(string, string)
ExtensibleColumnsBase.SetLocalAbsolutePrefixes(string, string)
ExtensibleColumnsBase.SetIconHint(string)
ExtensibleColumnsBase.SetRestriction(params ArchiveRestrictionInfo[])
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.RootQuery
ExtensibleColumnsBase.OrderBySlots
ExtensibleColumnsBase.PopulateDisplayValue
ExtensibleColumnsBase.PopulateTooltipHint
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 class MailingsHistoryExtender : TableExtenderBase<HistoryTableInfo>, IArchiveProviderQueryMapping, IArchiveExtender, IArchiveProviderDoesExtend, IArchiveProviderHasColumns, IArchiveProviderExtensible

Constructors

MailingsHistoryExtender()

Extends the Mailings (s_shipment) provider with the current user's recently-visited history. Composed into MailingsExtenderBase via MailingsExtenderBase.Features.History, but it stays dormant — no join, no return field — until the ColHistoryRank column is actually requested (output, restriction or order-by). So the shared mailings lists (activity archives etc.) are unaffected, and only a caller that opts in (the "Recent" tab) pays for it.

The join is to the History table on record_id = shipment_id, restricted to the same (table_id, associate_id, extra_id) key the History business logic uses (see SuperOffice.Services.Implementation.HistoryImplementation GetHistorySelect). When the caller restricts on ColHistoryRank — as the Recent tab does — the join becomes an INNER join, so only recently-visited mailings are returned; otherwise it's a left-outer join that simply annotates each mailing with its rank (1 = most recent).

Declaration
public MailingsHistoryExtender()

Fields

ColHistoryRank

Extends the Mailings (s_shipment) provider with the current user's recently-visited history. Composed into MailingsExtenderBase via MailingsExtenderBase.Features.History, but it stays dormant — no join, no return field — until the ColHistoryRank column is actually requested (output, restriction or order-by). So the shared mailings lists (activity archives etc.) are unaffected, and only a caller that opts in (the "Recent" tab) pays for it.

The join is to the History table on record_id = shipment_id, restricted to the same (table_id, associate_id, extra_id) key the History business logic uses (see SuperOffice.Services.Implementation.HistoryImplementation GetHistorySelect). When the caller restricts on ColHistoryRank — as the Recent tab does — the join becomes an INNER join, so only recently-visited mailings are returned; otherwise it's a left-outer join that simply annotates each mailing with its rank (1 = most recent).

Declaration
public const string ColHistoryRank = "historyRank"
Field Value
Type Description
string

_colHistoryRank

Extends the Mailings (s_shipment) provider with the current user's recently-visited history. Composed into MailingsExtenderBase via MailingsExtenderBase.Features.History, but it stays dormant — no join, no return field — until the ColHistoryRank column is actually requested (output, restriction or order-by). So the shared mailings lists (activity archives etc.) are unaffected, and only a caller that opts in (the "Recent" tab) pays for it.

The join is to the History table on record_id = shipment_id, restricted to the same (table_id, associate_id, extra_id) key the History business logic uses (see SuperOffice.Services.Implementation.HistoryImplementation GetHistorySelect). When the caller restricts on ColHistoryRank — as the Recent tab does — the join becomes an INNER join, so only recently-visited mailings are returned; otherwise it's a left-outer join that simply annotates each mailing with its rank (1 = most recent).

Declaration
protected ArchiveColumnInfo _colHistoryRank
Field Value
Type Description
ArchiveColumnInfo

Methods

InnerModifyQuery()

Expose history.rank as an orderable/restrictable column.

Declaration
protected override void InnerModifyQuery()
Overrides
ExtenderBase<HistoryTableInfo>.InnerModifyQuery()
Remarks

Default ordering can't be forced from here: QueryProviderBase rebuilds the query's OrderBy from its OrderBySlots at finalize time, discarding any OrderBy added during query construction. The consuming list (the Recent tab) requests the sort on ColHistoryRank.

SetJoin()

Join the History table to the parent s_shipment, restricted to the current user's shipment history. INNER join when the caller restricts on ColHistoryRank (→ only recent mailings), left-outer otherwise (→ all mailings, annotated with rank).

Declaration
protected override HistoryTableInfo SetJoin()
Returns
Type Description
HistoryTableInfo
Overrides
ExtenderBase<HistoryTableInfo>.SetJoin()

Implements

IArchiveProviderQueryMapping
IArchiveExtender
IArchiveProviderDoesExtend
IArchiveProviderHasColumns
IArchiveProviderExtensible

Extension Methods

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