• Модуль: imopenlines
  • Путь к файлу: ~/bitrix/modules/imopenlines/lib/model/session.php
  • Класс: BitrixImOpenLinesModelSessionTable
  • Вызов: SessionTable::getMap
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;
}