- Модуль: imopenlines
- Путь к файлу: ~/bitrix/modules/imopenlines/lib/queue/event/queue.php
- Класс: BitrixImOpenLinesQueueEventQueue
- Вызов: Queue::returnUserToQueue
public function returnUserToQueue(array $userIds): void;
/**
* Return to the queue of not accepted or missed sessions.
*
* @param int $userId
* @param string $reasonReturn
* @return void
*/
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);
}
}
}