- Модуль: voximplant
- Путь к файлу: ~/bitrix/modules/voximplant/lib/routing/queue.php
- Класс: BitrixVoximplantRoutingQueue
- Вызов: Queue::getUsersToInvite
protected function getUsersToInvite(BitrixVoximplantQueue $queue, array $queueHistory)
{
$query = QueueUserTable::query()
->setSelect([
'ID',
'USER_ID',
'IS_ONLINE' => 'USER.IS_ONLINE',
'IS_BUSY' => 'USER.IS_BUSY',
'UF_VI_PHONE' => 'USER.UF_VI_PHONE'
])
->where('QUEUE_ID', $this->queueId)
->where('USER.ACTIVE', 'Y');
if($queue->getType() == CVoxImplantConfig::QUEUE_TYPE_EVENLY)
{
$query->setOrder(['LAST_ACTIVITY_DATE' => 'asc']);
}
else
{
$query->setOrder(['ID' => 'asc']);
}
if (!empty($queueHistory))
{
$query->whereNotIn('USER_ID', $queueHistory);
}
$users = [];
$busyUsers = [];
$cursor = $query->exec();
//echo $query->getQuery();
while ($row = $cursor->fetch())
{
$hasMobile = CVoxImplantUser::hasMobile($row['USER_ID']);
if ($row['IS_ONLINE'] != 'Y' && $row['UF_VI_PHONE'] != 'Y' && !$hasMobile)
{
continue;
}
if ($this->checkTimeman && !CVoxImplantUser::GetActiveStatusByTimeman($row['USER_ID']))
{
continue;
}
if ($row['IS_BUSY'] == "Y")
{
$busyUsers[] = $row['USER_ID'];
continue;
}
$users[$row['USER_ID']] = [
'USER_ID' => $row['USER_ID'],
'USER_HAVE_PHONE' => $row['UF_VI_PHONE'] == 'Y'? 'Y': 'N',
'USER_HAVE_MOBILE' => $hasMobile ? 'Y' : 'N'
];
if($queue->getType() != CVoxImplantConfig::QUEUE_TYPE_ALL)
{
break;
}
}
return [
$users,
$busyUsers
];
}