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')),
);
}