• Модуль: imopenlines
  • Путь к файлу: ~/bitrix/modules/imopenlines/lib/queue/event/queue.php
  • Класс: BitrixImOpenLinesQueueEventQueue
  • Вызов: Queue::checkFreeSlotOnMessageSend
public function checkFreeSlotOnMessageSend($messageData): void
{
	if ($this->configLine['MAX_CHAT'] > 0)
	{
		$session = new Session();
		$resultLoad = $session->load([
			'USER_CODE' => $messageData['CHAT_ENTITY_ID'],
			'SKIP_CREATE' => 'Y'
		]);

		if ($resultLoad)
		{
			$firstMessage = $messageData['STATUS_BEFORE'] < Session::STATUS_CLIENT_AFTER_OPERATOR && $messageData['STATUS_AFTER'] == Session::STATUS_OPERATOR;

			if ($firstMessage)
			{
				$returnNotDistributed = ($this->configLine['TYPE_MAX_CHAT'] == ImOpenLinesConfig::TYPE_MAX_CHAT_ANSWERED ||
					$this->configLine['TYPE_MAX_CHAT'] == ImOpenLinesConfig::TYPE_MAX_CHAT_ANSWERED_NEW);
			}
			else
			{
				$returnNotDistributed = ($this->configLine['TYPE_MAX_CHAT'] == ImOpenLinesConfig::TYPE_MAX_CHAT_ANSWERED);
			}

			if ($returnNotDistributed)
			{
				$this->returnNotDistributedSessionsToQueue();
				ImOpenLinesQueue::transferToNextSession(false, ImOpenLinesQueueEvent::COUNT_SESSIONS_DEFAULT, $this->configLine['ID']);
			}
		}
	}
}