• Модуль: imopenlines
  • Путь к файлу: ~/bitrix/modules/imopenlines/lib/queue/all.php
  • Класс: BitrixImOpenLinesQueueAll
  • Вызов: All::getOperatorsQueue
public function getOperatorsQueue($currentOperator = 0): array
{
	$queueTime = $this->getQueueTime();

	$result = [
		'RESULT' => false,
		'OPERATOR_ID' => 0,
		'OPERATOR_LIST' => [],
		'DATE_QUEUE' => (new DateTime())->add($queueTime . ' SECONDS'),
		'QUEUE_HISTORY' => [],
	];

	$operatorList = [];
	$queueHistory = [];
	$fullCountOperators = 0;

	$res = ImOpenLinesQueue::getList([
		'select' => [
			'ID',
			'USER_ID'
		],
		'filter' => [
			'=CONFIG_ID' => $this->config['ID']
		],
		'order' => [
			'SORT' => 'ASC',
			'ID' => 'ASC'
		],
	]);

	while($queueUser = $res->fetch())
	{
		$fullCountOperators++;
		if($this->isOperatorAvailable($queueUser['USER_ID'], $currentOperator))
		{
			$operatorList[] = $queueUser['USER_ID'];
			$queueHistory[$queueUser['USER_ID']] = true;
		}
	}

	$this->processingEmptyQueue($this->config['ID'], $fullCountOperators);

	if(!empty($operatorList))
	{
		$result = [
			'RESULT' => true,
			'OPERATOR_ID' => 0,
			'OPERATOR_LIST' => $operatorList,
			'DATE_QUEUE' => (new DateTime())->add($queueTime . ' SECONDS'),
			'QUEUE_HISTORY' => $queueHistory,
		];
	}

	return $result;
}