Namespace LemonEdge.API.Entities
Classes
BaseEntity
The base class that every system implementation of IBaseEntity inherits from
BaseEntityCloneContext
The context that is used with SetItemInfo and ICloneableAsync copying items
BaseEntityWithPermissions
Every entity that requires its own permissions must implement IBaseEntityWithPermissions
You don't have to inherit from this class necessarily, you can implement your own base class
This does contain some static helper functions for working with permissions
EntityCreator
EntityKeyComparer
Implements the IEqualityComparer<T> for all IBaseEntity. Compares on type, canvas and ID
EntityKeyComparer<T>
Implements the IEqualityComparer<T> for a specific type T
that implements
IBaseEntity. Compares on canvas and ID
IsBaseInterfaceAttribute
If an interface implements the base common properties of a base entity, it needs to be marked with this attribute.
See IObjectEntityBase for an example. This interface is used by all entities inheriting an Object Entity, and by the base Object Entity itself.
Thus IObjectEntityBase is marked with this attribute to identify it as the interface that inheriting entities (see ICompany for an example), do not need to actually implement in the back-end. Those values come from the base entity itself.QueryWhereFilterHelper
Interfaces
IBaseEntity
This is the base interface all entities within LemonEdge must implement.
All the properties on this base interface are implemented by *every* entity in LemonEdge, and thus exist as columns for every table in the database
IBaseEntityWithPermissions
Any entity that needs its own permissions needs to inherits from this interface rather than IBaseEntity
This ensures the system creates appropriate permissions table for this entity, and that individual records can be assigned permissions
If an entity does not inherit from this then it should inherit permissions from another entity through a relationship (InheritPermissions). If it does not then the entity will effectively have full permissions for every user as it will have no permissions, inherited or otherwise.
IBaseEntityWithPermissionsUser
Any entity that needs its own permissions needs to inherits from this interface rather than IBaseEntity
This ensures the system creates appropriate permissions table for this entity, and that individual records can be assigned permissions
If an entity does not inherit from this then it should inherit permissions from another entity through a relationship (InheritPermissions). If it does not then the entity will effectively have full permissions for every user as it will have no permissions, inherited or otherwise.
ICanBeLocked
Indicates this entity can be locked. The system enforces locked items in the core and ensures they can not be modified when they are marked as locked.
For example, transactions use this to lock them when they are finalized or cancelled
IEntityCreator
A helper class for working with new entities in the LemonEdge system
This ensures all configured processes, settings and workflow are applied to all new items when they are created either by a user or the system itself
IHasSaveProcessingTask
Indicates this entity when saved can create an associated task to finish processing the save.
This task is created during the save by a processor implementing IBaseDataSetProcessorWithDBSave
See Processors.Transactional.BaseTransactionProcessor for more infoThis is used by a client to notice that although the save is complete, a task has been automatically created for processing the rest of this task, and it can track that task for final completion. When the task is completing one of the steps is to set this back to null.
IShareAcrossAccounts
Indicates this entity is one that can be shared across multi-tenanted accounts in the same database.
This is used for configuration such as addins IAddInModule, and custom objects ICustomObject.
Only the root account (ID=1) can edit items that are shared items across acounts