• Модуль: 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
	));
}