• Модуль: voximplant
  • Путь к файлу: ~/bitrix/modules/voximplant/lib/integration/report/handler/missedreaction/missedreaction.php
  • Класс: BitrixVoximplantIntegrationReportHandlerMissedReactionMissedReaction
  • Вызов: MissedReaction::getBaseQuery
public function getBaseQuery($startDate, $finishDate, $filterParameters)
{
	$query = StatisticMissedTable::query();

	$query->addSelect('PORTAL_USER_ID');
	$query->addSelect('CALL_MISSED');
	$query->addSelect('UNANSWERED');
	$query->addSelect('AVG_RESPONSE_TIME');

	$this->addToQueryFilterCase($query, $filterParameters);
	$query->whereBetween('CALL_START_DATE', $startDate, $finishDate);
	$query->addGroup('PORTAL_USER_ID');

	$query->registerRuntimeField(new ExpressionField(
		'CALL_MISSED',
		'count(%s)',
		['ID']
	));

	$query->registerRuntimeField(new ExpressionField(
		'UNANSWERED',
		'(sum(if(DATE_SUB(%s, INTERVAL 24 HOUR) <= %s, 0, 1)))',
		['CALLBACK_CALL_START_DATE', 'CALL_START_DATE'])
	);

	$query->registerRuntimeField(new ExpressionField(
		'AVG_RESPONSE_TIME',
		'round(sum(if(%s is not null, TIMESTAMPDIFF(MINUTE, %s, %s), 0)) / (sum(if(%s is not null, if(DATE_SUB(%s, INTERVAL 24 HOUR) <= %s, 1, 0), 0))))',
		[
			'CALLBACK_CALL_START_DATE',
			'CALL_START_DATE',
			'CALLBACK_CALL_START_DATE',
			'CALLBACK_CALL_START_DATE',
			'CALLBACK_CALL_START_DATE',
			'CALL_START_DATE',
		])
	);

	return $query;
}