Class ContactSentry
ContactSentry guards Contact entities and their component rows. The ContactSentry applies to the following classes: Contact, ContactRow, TextRow, AddressRow, PhoneRow, EmailRow, UrlRow, InterestRows, UdefLarge and UdefSmall
Implements
Inherited Members
Namespace: SuperOffice.CRM.Security
Assembly: SoDataBase.dll
Syntax
public class ContactSentry : RoleRightsSentry<ContactTableInfo>, ICloneable
Remarks
The contact row automatically creates a sentry, because contact is also an RDB Entity. The text row does not create a sentry because it does not know which entity it belongs to, so we have to give it a sentry to use. The text row asks the contact sentry about its permissions.
Examples
ContactRow c = new ContactRow.IdxContactId(1234); TextRow t = new TextRow.IdxTextId( c.TextId, c.Sentries );
Constructors
ContactSentry(ContactTableInfo)
Create a contact sentry.
Declaration
public ContactSentry(ContactTableInfo contactTableInfo)
Parameters
Type | Name | Description |
---|---|---|
ContactTableInfo | contactTableInfo |
Remarks
The contact row automatically creates a sentry, because contact is also an RDB Entity. The text row does not create a sentry because it does not know which entity it belongs to, so we have to give it a sentry to use. The text row asks the contact sentry about its permissions.
Examples
ContactRow c = new ContactRow.IdxContactId(1234); TextRow t = new TextRow.IdxTextId( c.TextId, c.Sentries );
ContactSentry(ContactTableInfo, ISoDataLookup)
Create a contact sentry for a particular contact row. The row's associate_id will control the user's permissions with respect to this row.
Declaration
public ContactSentry(ContactTableInfo contactTableInfo, ISoDataLookup lookup)
Parameters
Type | Name | Description |
---|---|---|
ContactTableInfo | contactTableInfo | |
ISoDataLookup | lookup |
Remarks
The contact row automatically creates a sentry, because contact is also an RDB Entity. The text row does not create a sentry because it does not know which entity it belongs to, so we have to give it a sentry to use. The text row asks the contact sentry about its permissions.
Examples
ContactRow c = new ContactRow.IdxContactId(1234); TextRow t = new TextRow.IdxTextId( c.TextId, c.Sentries );
Properties
AssociateId
Returns Contact.Associate_id. Returns the current user's associate-id if the field is empty.
Declaration
public override int AssociateId { get; }
Property Value
Type | Description |
---|---|
Int32 |
Overrides
Remarks
The contact row automatically creates a sentry, because contact is also an RDB Entity. The text row does not create a sentry because it does not know which entity it belongs to, so we have to give it a sentry to use. The text row asks the contact sentry about its permissions.
Examples
ContactRow c = new ContactRow.IdxContactId(1234); TextRow t = new TextRow.IdxTextId( c.TextId, c.Sentries );
GroupId
Contact.Group_id -- the primary group of the AssociateId at the time the associate was set. Returns the associate's primary group id if not set in the record.
Declaration
public override int GroupId { get; }
Property Value
Type | Description |
---|---|
Int32 |
Overrides
Remarks
The contact row automatically creates a sentry, because contact is also an RDB Entity. The text row does not create a sentry because it does not know which entity it belongs to, so we have to give it a sentry to use. The text row asks the contact sentry about its permissions.
Examples
ContactRow c = new ContactRow.IdxContactId(1234); TextRow t = new TextRow.IdxTextId( c.TextId, c.Sentries );
IsGhostRow
Returns whether the primary key is a ghost field (i.e., we're looking at a nonexistent record, as opposed to just looking at a new one)
Declaration
public override bool IsGhostRow { get; }
Property Value
Type | Description |
---|---|
Boolean |
Overrides
Remarks
The contact row automatically creates a sentry, because contact is also an RDB Entity. The text row does not create a sentry because it does not know which entity it belongs to, so we have to give it a sentry to use. The text row asks the contact sentry about its permissions.
Examples
ContactRow c = new ContactRow.IdxContactId(1234); TextRow t = new TextRow.IdxTextId( c.TextId, c.Sentries );
IsNew
Is the row saved to teh database (persisted primary key == 0)
Declaration
public override bool IsNew { get; }
Property Value
Type | Description |
---|---|
Boolean |
Overrides
Remarks
The contact row automatically creates a sentry, because contact is also an RDB Entity. The text row does not create a sentry because it does not know which entity it belongs to, so we have to give it a sentry to use. The text row asks the contact sentry about its permissions.
Examples
ContactRow c = new ContactRow.IdxContactId(1234); TextRow t = new TextRow.IdxTextId( c.TextId, c.Sentries );
MainTable
Return Contact table info.
Declaration
protected ContactTableInfo MainTable { get; }
Property Value
Type | Description |
---|---|
ContactTableInfo |
Remarks
The contact row automatically creates a sentry, because contact is also an RDB Entity. The text row does not create a sentry because it does not know which entity it belongs to, so we have to give it a sentry to use. The text row asks the contact sentry about its permissions.
Examples
ContactRow c = new ContactRow.IdxContactId(1234); TextRow t = new TextRow.IdxTextId( c.TextId, c.Sentries );
RegisteredAssociateIdField
The field that holds the associate id of teh user first creating the item.
Declaration
public override FieldInfo RegisteredAssociateIdField { get; }
Property Value
Type | Description |
---|---|
FieldInfo |
Overrides
Remarks
The contact row automatically creates a sentry, because contact is also an RDB Entity. The text row does not create a sentry because it does not know which entity it belongs to, so we have to give it a sentry to use. The text row asks the contact sentry about its permissions.
Examples
ContactRow c = new ContactRow.IdxContactId(1234); TextRow t = new TextRow.IdxTextId( c.TextId, c.Sentries );
RegisteredField
The field that holds information about when the item was first created.
Declaration
public override FieldInfo RegisteredField { get; }
Property Value
Type | Description |
---|---|
FieldInfo |
Overrides
Remarks
The contact row automatically creates a sentry, because contact is also an RDB Entity. The text row does not create a sentry because it does not know which entity it belongs to, so we have to give it a sentry to use. The text row asks the contact sentry about its permissions.
Examples
ContactRow c = new ContactRow.IdxContactId(1234); TextRow t = new TextRow.IdxTextId( c.TextId, c.Sentries );
RowId
Should return a contact.contact_id
Declaration
public override int RowId { get; }
Property Value
Type | Description |
---|---|
Int32 |
Overrides
Remarks
The contact row automatically creates a sentry, because contact is also an RDB Entity. The text row does not create a sentry because it does not know which entity it belongs to, so we have to give it a sentry to use. The text row asks the contact sentry about its permissions.
Examples
ContactRow c = new ContactRow.IdxContactId(1234); TextRow t = new TextRow.IdxTextId( c.TextId, c.Sentries );
Methods
ComputeFieldRights()
ContactSentry guards Contact entities and their component rows. The ContactSentry applies to the following classes: Contact, ContactRow, TextRow, AddressRow, PhoneRow, EmailRow, UrlRow, InterestRows, UdefLarge and UdefSmall
Declaration
protected override void ComputeFieldRights()
Overrides
Remarks
The contact row automatically creates a sentry, because contact is also an RDB Entity. The text row does not create a sentry because it does not know which entity it belongs to, so we have to give it a sentry to use. The text row asks the contact sentry about its permissions.
Examples
ContactRow c = new ContactRow.IdxContactId(1234); TextRow t = new TextRow.IdxTextId( c.TextId, c.Sentries );
ComputeTableRights()
Computes table rights for Contact tables. Deny delete to contacts which own associates or satellites. Deny full update rights to license owner (name field is sacred).
Declaration
protected override void ComputeTableRights()
Overrides
Remarks
The contact row automatically creates a sentry, because contact is also an RDB Entity. The text row does not create a sentry because it does not know which entity it belongs to, so we have to give it a sentry to use. The text row asks the contact sentry about its permissions.
Examples
ContactRow c = new ContactRow.IdxContactId(1234); TextRow t = new TextRow.IdxTextId( c.TextId, c.Sentries );
GetRecordOwnershipIndex()
Permit updates to someone else regardless of permissions for the other party.
Declaration
public override EOwnershipIndex GetRecordOwnershipIndex()
Returns
Type | Description |
---|---|
EOwnershipIndex | Minimum ownership index taking persisted AssociateId into account. |
Overrides
Remarks
The contact row automatically creates a sentry, because contact is also an RDB Entity. The text row does not create a sentry because it does not know which entity it belongs to, so we have to give it a sentry to use. The text row asks the contact sentry about its permissions.
Examples
ContactRow c = new ContactRow.IdxContactId(1234); TextRow t = new TextRow.IdxTextId( c.TextId, c.Sentries );
GetRowSentry()
ContactSentry guards Contact entities and their component rows. The ContactSentry applies to the following classes: Contact, ContactRow, TextRow, AddressRow, PhoneRow, EmailRow, UrlRow, InterestRows, UdefLarge and UdefSmall
Declaration
public override Sentry GetRowSentry()
Returns
Type | Description |
---|---|
Sentry |
Overrides
Remarks
The contact row automatically creates a sentry, because contact is also an RDB Entity. The text row does not create a sentry because it does not know which entity it belongs to, so we have to give it a sentry to use. The text row asks the contact sentry about its permissions.
Examples
ContactRow c = new ContactRow.IdxContactId(1234); TextRow t = new TextRow.IdxTextId( c.TextId, c.Sentries );
GetTableInfoFromQuery<TargetTableInfo>()
Get tables of the given type from our query
Declaration
protected List<TargetTableInfo> GetTableInfoFromQuery<TargetTableInfo>()
where TargetTableInfo : TableInfo
Returns
Type | Description |
---|---|
List<TargetTableInfo> | List of tableinfos of the given type, from the query |
Type Parameters
Name | Description |
---|---|
TargetTableInfo | Type of table to look for |
Remarks
The contact row automatically creates a sentry, because contact is also an RDB Entity. The text row does not create a sentry because it does not know which entity it belongs to, so we have to give it a sentry to use. The text row asks the contact sentry about its permissions.
Examples
ContactRow c = new ContactRow.IdxContactId(1234); TextRow t = new TextRow.IdxTextId( c.TextId, c.Sentries );