static function getMap()
{
$result = [
new IntegerField('ID', [
'primary' => true,
'autocomplete' => true,
'title' => Loc::getMessage('SESSION_ENTITY_ID_FIELD'),
]),
new StringField('MODE', [
'validation' => [__CLASS__, 'validateMode'],
'title' => Loc::getMessage('SESSION_ENTITY_MODE_FIELD'),
'default_value' => 'input',
]),
new StringField('SOURCE', [
'validation' => [__CLASS__, 'validateSource'],
'title' => Loc::getMessage('SESSION_ENTITY_SOURCE_FIELD'),
]),
new IntegerField('STATUS', [
'default_value' => '0',
]),
new IntegerField('CONFIG_ID', [
'title' => Loc::getMessage('SESSION_ENTITY_CONFIG_ID_FIELD'),
'default_value' => '0',
]),
new IntegerField('USER_ID', [
'required' => true,
'title' => Loc::getMessage('SESSION_ENTITY_USER_ID_FIELD'),
'default_value' => '0',
]),
new Reference(
'USER',
UserTable::class,
Join::on('this.USER_ID', 'ref.ID')
),
new IntegerField('OPERATOR_ID', [
'required' => true,
'title' => Loc::getMessage('SESSION_ENTITY_OPERATOR_ID_FIELD'),
'default_value' => '0',
]),
new BooleanField('OPERATOR_FROM_CRM', [
'values' => ['N', 'Y'],
'title' => Loc::getMessage('SESSION_ENTITY_OPERATOR_FROM_CRM'),
'default_value' => 'N',
]),
new Reference(
'OPERATOR',
UserTable::class,
Join::on('this.OPERATOR_ID', 'ref.ID')
),
new StringField('USER_CODE', [
'validation' => [__CLASS__, 'validateUserCode'],
'title' => Loc::getMessage('SESSION_ENTITY_USER_CODE_FIELD'),
]),
new IntegerField('CHAT_ID', [
'required' => true,
'title' => Loc::getMessage('SESSION_ENTITY_CHAT_ID_FIELD'),
'default_value' => '0',
]),
new IntegerField('MESSAGE_COUNT', [
'title' => Loc::getMessage('SESSION_ENTITY_MESSAGE_FIELD_NEW_NEW'),
'default_value' => '0',
]),
new IntegerField('LIKE_COUNT', [
'title' => Loc::getMessage('SESSION_ENTITY_LIKE_COUNT_FIELD'),
'default_value' => '0',
]),
new IntegerField('START_ID', [
'required' => true,
'title' => Loc::getMessage('SESSION_ENTITY_START_ID_FIELD'),
'default_value' => '0',
]),
new IntegerField('END_ID', [
'required' => true,
'title' => Loc::getMessage('SESSION_ENTITY_END_ID_FIELD'),
'default_value' => '0',
]),
new IntegerField('LAST_SEND_MAIL_ID', [
'required' => true,
'default_value' => '0',
]),
new BooleanField('CRM', [
'values' => ['N', 'Y'],
'title' => Loc::getMessage('SESSION_ENTITY_CRM_FIELD'),
'default_value' => 'N',
]),
new BooleanField('CRM_CREATE', [
'values' => ['N', 'Y'],
'title' => Loc::getMessage('SESSION_ENTITY_CRM_CREATE_FIELD'),
'default_value' => 'N',
]),
new BooleanField('CRM_CREATE_LEAD', [
'values' => ['N', 'Y'],
'title' => Loc::getMessage('SESSION_ENTITY_CRM_CREATE_LEAD'),
'default_value' => 'N',
]),
new BooleanField('CRM_CREATE_COMPANY', [
'values' => ['N', 'Y'],
'title' => Loc::getMessage('SESSION_ENTITY_CRM_CREATE_COMPANY'),
'default_value' => 'N',
]),
new BooleanField('CRM_CREATE_CONTACT', [
'values' => ['N', 'Y'],
'title' => Loc::getMessage('SESSION_ENTITY_CRM_CREATE_CONTACT'),
'default_value' => 'N',
]),
new BooleanField('CRM_CREATE_DEAL', [
'values' => ['N', 'Y'],
'title' => Loc::getMessage('SESSION_ENTITY_CRM_CREATE_DEAL'),
'default_value' => 'N',
]),
new IntegerField('CRM_ACTIVITY_ID', [
'title' => Loc::getMessage('SESSION_ENTITY_CRM_ACTIVITY_ID_FIELD'),
'default_value' => '0',
]),
new TextField('CRM_TRACE_DATA', [
'title' => Loc::getMessage('SESSION_ENTITY_CRM_TRACE_DATA_FIELD')
]),
new DatetimeField('DATE_CREATE', [
'title' => Loc::getMessage('SESSION_ENTITY_DATE_CREATE_FIELD'),
'default_value' => [__CLASS__, 'getCurrentDate'],
]),
new DatetimeField('DATE_OPERATOR', [
'title' => Loc::getMessage('SESSION_ENTITY_DATE_OPERATOR_FIELD_1'),
]),
new DatetimeField('DATE_MODIFY', [
'title' => Loc::getMessage('SESSION_ENTITY_DATE_MODIFY_FIELD'),
'default_value' => [__CLASS__, 'getCurrentDate'],
]),
new DatetimeField('DATE_OPERATOR_ANSWER', [
'title' => Loc::getMessage('SESSION_ENTITY_DATE_OPERATOR_ANSWER_FIELD_NEW_1'),
]),
new DatetimeField('DATE_OPERATOR_CLOSE', [
'title' => Loc::getMessage('SESSION_ENTITY_DATE_OPERATOR_CLOSE_FIELD_NEW'),
]),
new DatetimeField('DATE_FIRST_ANSWER', [
'title' => Loc::getMessage('SESSION_ENTITY_DATE_FIRST_ANSWER_FIELD_NEW'),
]),
new DatetimeField('DATE_LAST_MESSAGE', [
'title' => Loc::getMessage('SESSION_ENTITY_DATE_LAST_MESSAGE_FIELD'),
]),
new DatetimeField('DATE_FIRST_LAST_USER_ACTION', [
'title' => Loc::getMessage('SESSION_ENTITY_DATE_FIRST_LAST_USER_ACTION_FIELD'),
]),
new DatetimeField('DATE_CLOSE', [
'title' => Loc::getMessage('SESSION_ENTITY_DATE_CLOSE_FIELD'),
]),
new DatetimeField('DATE_CLOSE_VOTE'),
new IntegerField('TIME_BOT', [
'title' => Loc::getMessage('SESSION_ENTITY_TIME_BOT_FIELD'),
'default_value' => '0',
]),
new IntegerField('TIME_FIRST_ANSWER', [
'title' => Loc::getMessage('SESSION_ENTITY_TIME_FIRST_ANSWER_FIELD_NEW'),
'default_value' => '0',
]),
new IntegerField('TIME_ANSWER', [
'title' => Loc::getMessage('SESSION_ENTITY_TIME_ANSWER_FIELD_NEW'),
'default_value' => '0',
]),
new IntegerField('TIME_CLOSE', [
'title' => Loc::getMessage('SESSION_ENTITY_TIME_CLOSE_FIELD'),
'default_value' => '0',
]),
new IntegerField('TIME_DIALOG', [
'title' => Loc::getMessage('SESSION_ENTITY_TIME_DIALOG_FIELD'),
'default_value' => '0',
]),
new BooleanField('WAIT_ACTION', [
'values' => ['N', 'Y'],
'title' => Loc::getMessage('SESSION_ENTITY_WAIT_ACTION_FIELD'),
'default_value' => 'N',
]),
new BooleanField('WAIT_VOTE', [
'values' => ['N', 'Y'],
'title' => Loc::getMessage('SESSION_ENTITY_WAIT_VOTE_FIELD'),
'default_value' => 'N',
]),
new BooleanField('WAIT_ANSWER', [
'values' => ['N', 'Y'],
'title' => Loc::getMessage('SESSION_ENTITY_WAIT_ANSWER_FIELD_NEW'),
'default_value' => 'Y',
]),
new BooleanField('CLOSED', [
'values' => ['N', 'Y'],
'title' => Loc::getMessage('SESSION_ENTITY_CLOSED_FIELD'),
'default_value' => 'N',
]),
new BooleanField('PAUSE', [
'values' => ['N', 'Y'],
'title' => Loc::getMessage('SESSION_ENTITY_PAUSE_FIELD'),
'default_value' => 'N',
]),
new BooleanField('SPAM', [
'values' => ['N', 'Y'],
'title' => Loc::getMessage('SESSION_ENTITY_SPAM_FIELD'),
'default_value' => 'N',
]),
new BooleanField('WORKTIME', [
'values' => ['N', 'Y'],
'title' => Loc::getMessage('SESSION_ENTITY_WORKTIME_FIELD'),
'default_value' => 'Y',
]),
new BooleanField('SEND_NO_ANSWER_TEXT', [
'values' => ['N', 'Y'],
'title' => Loc::getMessage('SESSION_ENTITY_SEND_NO_ANSWER_TEXT_FIELD'),
'default_value' => 'N',
]),
new BooleanField('SEND_NO_WORK_TIME_TEXT', [
'values' => ['N', 'Y'],
'title' => Loc::getMessage('SESSION_ENTITY_SEND_NO_ANSWER_TEXT_FIELD'),
'default_value' => 'N',
]),
new TextField('QUEUE_HISTORY', [
'title' => Loc::getMessage('SESSION_ENTITY_QUEUE_HISTORY_FIELD'),
'default_value' => [],
'serialized' => true
]),
new TextField('BLOCK_REASON', [
'title' => Loc::getMessage('SESSION_ENTITY_BLOCK_REASON'),
]),
new DatetimeField('BLOCK_DATE', [
'title' => Loc::getMessage('SESSION_ENTITY_BLOCK_DATE'),
]),
new IntegerField('VOTE', [
'required' => true,
'title' => Loc::getMessage('SESSION_ENTITY_VOTE_FIELD'),
'default_value' => '0',
]),
new IntegerField('VOTE_HEAD', [
'required' => true,
'title' => Loc::getMessage('SESSION_ENTITY_VOTE_HEAD_FIELD'),
'default_value' => '0',
]),
new TextField('COMMENT_HEAD', [
'title' => Loc::getMessage('SESSION_ENTITY_COMMENT_HEAD_FIELD'),
]),
new IntegerField('CATEGORY_ID', [
'title' => Loc::getMessage('SESSION_ENTITY_CATEGORY_ID_FIELD'),
'default_value' => '0',
]),
new IntegerField('EXTRA_REGISTER', [
'default_value' => '0',
]),
new StringField('EXTRA_USER_LEVEL', [
'validation' => [__CLASS__, 'validateExtraUserLevel'],
]),
new StringField('EXTRA_PORTAL_TYPE', [
'validation' => [__CLASS__, 'validateExtraPortalType'],
]),
new StringField('EXTRA_TARIFF', [
'validation' => [__CLASS__, 'validateExtraTariff'],
]),
new StringField('EXTRA_URL', [
'validation' => [__CLASS__, 'validateExtraUrl'],
]),
new StringField('SEND_FORM', [
'validation' => [__CLASS__, 'validateSendForm'],
'default_value' => 'none',
]),
new BooleanField('SEND_HISTORY', [
'values' => ['N', 'Y'],
'default_value' => 'N',
]),
new IntegerField('PARENT_ID', [
'default_value' => '0',
]),
(new Reference(
'INDEX',
SessionIndexTable::class,
Join::on('this.ID', 'ref.SESSION_ID')
))->configureJoinType('inner'),
new Reference(
'CONFIG',
ConfigTable::class,
Join::on('this.CONFIG_ID', 'ref.ID')
),
new Reference(
'CHECK',
SessionCheckTable::class,
Join::on('this.ID', 'ref.SESSION_ID')
),
new Reference(
'KPI_MESSAGES',
BitrixImOpenLinesModelSessionKpiMessagesTable::class,
Join::on('this.ID', 'ref.SESSION_ID')
),
new Reference(
'LIVECHAT',
LivechatTable::class,
Join::on('this.CONFIG_ID', 'ref.CONFIG_ID')
),
new BooleanField('IS_FIRST', [
'values' => ['N', 'Y'],
]),
];
if (Loader::includeModule('im'))
{
$result[] = new Reference(
'CHAT',
ChatTable::class,
Join::on('this.CHAT_ID', 'ref.ID')
);
}
return $result;
}