• Модуль: imopenlines
  • Путь к файлу: ~/bitrix/modules/imopenlines/lib/queue/event/queue.php
  • Класс: BitrixImOpenLinesQueueEventQueue
  • Вызов: Queue::returnNotAcceptedSessionsToQueue
public function returnNotAcceptedSessionsToQueue($userId, string $reasonReturn = ImOpenLinesQueue::REASON_DEFAULT): void
{
	$sessionList = [];

	$sessionListManager = SessionTable::getList([
		'select' => [
			'ID'
		],
		'filter' => [
			'=CONFIG_ID' => $this->configLine['ID'],
			'=OPERATOR_ID' => $userId,
			' Session::STATUS_OPERATOR,
			'!=PAUSE' => 'Y'
		]
	]);

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

	$countSession = count($sessionList);

	if ($countSession > 0)
	{
		if ($countSession > $this->getCountFreeSlots())
		{
			$sessionListManager = SessionTable::getList([
				'select' => [
					'ID'
				],
				'filter' => [
					'=CONFIG_ID' => $this->configLine['ID'],
					' Session::STATUS_ANSWER,
					'!=OPERATOR_ID' => $userId,
					'!=OPERATOR_FROM_CRM' => 'Y'
				]
			]);

			while ($sessionId = $sessionListManager->fetch()['ID'])
			{
				ImOpenLinesQueue::returnSessionToQueue($sessionId);
			}
		}

		foreach ($sessionList as $sessionId)
		{
			ImOpenLinesQueue::returnSessionToQueue($sessionId, $reasonReturn);
		}
	}
}