• Модуль: voximplant
  • Путь к файлу: ~/bitrix/modules/voximplant/lib/statistic.php
  • Класс: BitrixVoximplantStatisticTable
  • Вызов: StatisticTable::getMap
static function getMap()
{
	return array(
		new EntityIntegerField('ID', array(
			'primary' => true,
			'autocomplete' => true,
			'title' => Loc::getMessage("STATISTIC_ENTITY_ID_FIELD")
		)),
		new EntityIntegerField('ACCOUNT_ID', array(
			'title' => Loc::getMessage("STATISTIC_ENTITY_ACCOUNT_ID_FIELD")
		)),
		new EntityIntegerField('APPLICATION_ID'),
		new EntityStringField('APPLICATION_NAME', array(
			'validation' => function(){return array(new EntityValidatorLength(null, 80));},
			'title' => Loc::getMessage('STATISTIC_ENTITY_APPLICATION_NAME_FIELD'),
		)),
		new EntityIntegerField('PORTAL_USER_ID'),
		new EntityStringField('PORTAL_NUMBER', array(
			'required' => false,
			'validation' => function(){return array(new EntityValidatorLength(null, 50));},
			'title' => Loc::getMessage('STATISTIC_ENTITY_PORTAL_NUMBER_FIELD'),
		)),
		new EntityStringField('PHONE_NUMBER', array(
			'validation' => function(){return array(new EntityValidatorLength(null, 20));},
			'title' => Loc::getMessage('STATISTIC_ENTITY_PHONE_NUMBER_FIELD'),
		)),
		new EntityStringField('INCOMING', array(
			'required' => true,
			'validation' => function(){return array(new EntityValidatorLength(null, 50));},
			'title' => Loc::getMessage('STATISTIC_ENTITY_INCOMING_FIELD'),
		)),
		new EntityStringField('CALL_ID', array(
			'required' => false,
			'validation' => function(){return array(new EntityValidatorLength(null, 255));},
			'title' => Loc::getMessage('STATISTIC_ENTITY_CALL_ID_FIELD'),
		)),
		new EntityStringField('EXTERNAL_CALL_ID', array(
			'required' => false,
			'validation' => function(){return array(new EntityValidatorLength(null, 64));},
		)),
		new EntityStringField('CALL_CATEGORY', array(
			'required' => false,
			'validation' => function(){return array(new EntityValidatorLength(null, 20));},
			'title' => Loc::getMessage('STATISTIC_ENTITY_CALL_TYPE_FIELD'),
		)),
		new EntityStringField('CALL_LOG', array(
			'validation' => function(){return array(new EntityValidatorLength(null, 2000));},
			'title' => Loc::getMessage('STATISTIC_ENTITY_CALL_LOG_FIELD'),
		)),
		new EntityStringField('CALL_DIRECTION', array(
			'validation' => function(){return array(new EntityValidatorLength(null, 255));},
			'title' => Loc::getMessage('STATISTIC_ENTITY_CALL_DIRECTION_FIELD'),
		)),
		new EntityIntegerField('CALL_DURATION', array(
			'required' => false,
			'title' => Loc::getMessage('STATISTIC_ENTITY_CALL_DURATION_FIELD'),
		)),
		new EntityDatetimeField('CALL_START_DATE', array(
			'required' => true,
			'title' => Loc::getMessage('STATISTIC_ENTITY_CALL_START_DATE_FIELD'),
		)),
		new EntityIntegerField('CALL_STATUS', array(
			'data_type' => 'integer',
			'title' => Loc::getMessage('STATISTIC_ENTITY_CALL_STATUS_FIELD'),
		)),
		new EntityIntegerField('CALL_RECORD_ID', array(
			'title' => Loc::getMessage('STATISTIC_ENTITY_CALL_RECORD_ID_FIELD_2'),
		)),
		new EntityStringField('CALL_RECORD_URL', array(
			'validation' => function(){return array(new EntityValidatorLength(null, 2000));},
			'title' => Loc::getMessage('STATISTIC_ENTITY_CALL_RECORD_URL_FIELD'),
		)),
		new EntityIntegerField('CALL_WEBDAV_ID', array(
			'title' => Loc::getMessage('STATISTIC_ENTITY_CALL_WEBDAV_ID_FIELD'),
		)),
		new EntityIntegerField('CALL_VOTE', array(
			'title' => Loc::getMessage('STATISTIC_ENTITY_CALL_VOTE_FIELD'),
		)),
		new EntityFloatField('COST', array(
			'title' => Loc::getMessage('STATISTIC_ENTITY_COST_FIELD'),
		)),
		new EntityStringField('COST_CURRENCY', array(
			'validation' => function(){return array(new EntityValidatorLength(null, 50));},
			'title' => Loc::getMessage('STATISTIC_ENTITY_COST_CURRENCY_FIELD'),
		)),
		new EntityStringField('CALL_FAILED_CODE', array(
			'validation' => function(){return array(new EntityValidatorLength(null, 255));},
			'title' => Loc::getMessage('STATISTIC_ENTITY_CALL_FAILED_CODE_FIELD'),
		)),
		new EntityStringField('CALL_FAILED_REASON', array(
			'validation' => function(){return array(new EntityValidatorLength(null, 255));},
			'title' => Loc::getMessage('STATISTIC_ENTITY_CALL_FAILED_REASON_FIELD'),
		)),
		new EntityStringField('CRM_ENTITY_TYPE'),
		new EntityIntegerField('CRM_ENTITY_ID'),
		new EntityIntegerField('CRM_ACTIVITY_ID'),
		new EntityIntegerField('REST_APP_ID'),
		new EntityStringField('REST_APP_NAME'),
		new EntityIntegerField('TRANSCRIPT_ID'),
		new EntityBooleanField('TRANSCRIPT_PENDING', array(
			'values' => array('N', 'Y'),
			'default_value' => 'N'
		)),
		new EntityIntegerField('SESSION_ID'),
		new EntityIntegerField('REDIAL_ATTEMPT'),
		new EntityTextField('COMMENT'),
		new EntityReferenceField(
			'SEARCH_INDEX',
			StatisticIndexTable::getEntity(),
			array("=this.ID" => "ref.STATISTIC_ID"),
			array("join_type" => "LEFT")
		),
		new EntityReferenceField(
			"TRANSCRIPT",
			TranscriptTable::getEntity(),
			array("=this.TRANSCRIPT_ID" => "ref.ID"),
			array("join_type" => "LEFT")
		),

		(new OneToMany('CRM_BINDINGS', CallCrmEntityTable::class, 'CALL'))->configureJoinType('left'),

		new BitrixMainEntityExpressionField(
			'HAS_RECORD',
			'CASE WHEN %s IS NULL THEN 'N' ELSE 'Y' END',
			array('CALL_WEBDAV_ID')
		),
		new EntityExpressionField('TOTAL_DURATION','SUM(%s)', array('CALL_DURATION')),
		new EntityExpressionField('TOTAL_COST','SUM(%s)', array('COST')),
	);
}