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