• Модуль: imopenlines
  • Путь к файлу: ~/bitrix/modules/imopenlines/lib/kpimanager.php
  • Класс: BitrixImOpenLinesKpiManager
  • Вызов: KpiManager::getOperatorActiveKpiSessions
static function getOperatorActiveKpiSessions($operatorId)
{
	$result = [];

	$filterQueue = [
		'=CONFIG.KPI_CHECK_OPERATOR_ACTIVITY' => 'Y',
		'=CONFIG.ACTIVE' => 'Y',
		'>CONFIG.KPI_FURTHER_ANSWER_TIME' => 0,
		'=USER_ID' => $operatorId
	];
	$queueListManager = QueueTable::getList(
		[
			'select' => ['CONFIG_ID'],
			'filter' => $filterQueue,
			'order' => [
				'SORT' => 'ASC',
				'ID' => 'ASC'
			]
		]
	);

	$configList = [];
	while ($queue = $queueListManager->fetch())
	{
		$configList[$queue['CONFIG_ID']] = $queue['CONFIG_ID'];
	}

	if (!empty($configList))
	{
		$filterKpiMessages = [
			'=OPERATOR_ID' => $operatorId,
			'=CONFIG_ID' => $configList,
			'> [Session::STATUS_ANSWER, Session::STATUS_OPERATOR]
		];

		$sessionList = SessionTable::getList(
			[
				'select' => ['ID'],
				'filter' => $filterKpiMessages
			]
		);

		while ($session = $sessionList->fetch())
		{
			$result[] = $session['ID'];
		}
	}

	return $result;
}