- Модуль: voximplant
- Путь к файлу: ~/bitrix/modules/voximplant/lib/integration/report/handler/callduration/callduration.php
- Класс: BitrixVoximplantIntegrationReportHandlerCallDurationCallDuration
- Вызов: CallDuration::addCallDurationField
protected function addCallDurationField(Query $query, $callType, string $columnName, bool $isMainQuery = false): void
{
switch ($callType)
{
case CallType::INCOMING:
$expression = 'sum(if((%s = 2 and %s = 200), %s, null))';
$buildFrom = ['INCOMING', 'CALL_FAILED_CODE', 'CALL_DURATION'];
break;
case CallType::OUTGOING:
$expression = 'sum(if(%s = 1 and %s = 200, %s, null))';
$buildFrom = ['INCOMING', 'CALL_FAILED_CODE', 'CALL_DURATION'];
break;
case CallType::MISSED:
$expression = 'sum(if(%s = 2 and %s <> 200, %s, null))';
$buildFrom = ['INCOMING', 'CALL_FAILED_CODE', 'CALL_DURATION'];
break;
case CallType::CALLBACK:
$expression = 'sum(if(%s = 4, %s, null))';
$buildFrom = ['INCOMING', 'CALL_DURATION'];
break;
default:
$expression = 'sum(%s)';
$buildFrom = ['CALL_DURATION'];
break;
}
if ($isMainQuery)
{
$query->addSelect( 'previous.' . $columnName, 'PREVIOUS_' . $columnName);
}
$query->addSelect($columnName);
$query->registerRuntimeField(new ExpressionField(
$columnName,
$expression,
$buildFrom
));
}