static function getMap()
{
$connection = Application::getConnection();
$helper = $connection->getSqlHelper();
return [
new FieldsIntegerField("USER_ID", [
"primary" => true,
"required" => true
]),
new Reference(
"USER",
UserTable::class,
Join::on("this.USER_ID", "ref.ID"),
["join_type" => "INNER"]
),
new FieldsStringField("ITEM_ID", [
"primary" => true,
"required" => true
]),
new FieldsStringField("ENTITY_ID", [
"primary" => true,
"required" => true
]),
new FieldsStringField("CONTEXT", [
"primary" => true,
"required" => true
]),
new FieldsIntegerField("ITEM_ID_INT", [
"required" => true,
"default_value" => 0
]),
new FieldsStringField("PREFIX", [
"default_value" => ''
]),
new FieldsDatetimeField("LAST_USE_DATE", [
"required" => true,
"default_value" => function() {
return new DateTime();
}
]),
//Compatible Fields for FinderDestTable
new FieldsExpressionField(
'CODE',
'CASE WHEN %s='department' THEN REPLACE(' . $helper->getConcatFunction('%s', '%s') . ', ':F', '') ELSE ' . $helper->getConcatFunction('%s', '%s') . ' END',
['ENTITY_ID', 'PREFIX', 'ITEM_ID', 'PREFIX', 'ITEM_ID']
),
new FieldsExpressionField(
'CODE_TYPE',
'CASE
WHEN %s = 'user' THEN 'U'
WHEN %s = 'project' THEN 'SG'
WHEN %s = 'department' THEN 'D'
WHEN %s IN(
'crm-contact',
'crm-company',
'crm-lead',
'crm-quote',
'crm-deal',
'crm-order',
'crm-product'
) THEN 'CRM'
END',
['ENTITY_ID', 'ENTITY_ID', 'ENTITY_ID', 'ENTITY_ID']
),
new FieldsExpressionField(
'CODE_USER_ID',
'CASE WHEN %s = 'user' THEN %s END',
['ENTITY_ID', 'ITEM_ID_INT']
),
new Reference(
"CODE_USER",
UserTable::class,
Join::on("this.ITEM_ID_INT", "ref.ID")->where('this.ENTITY_ID', 'user')
),
new Reference(
'CODE_USER_CURRENT',
UserTable::class,
Join::on("this.ITEM_ID_INT", "ref.ID")
->where('this.ENTITY_ID', 'user')
->where('this.USER_ID', $GLOBALS['USER']->getId())
),
];
}