- Модуль: im
- Путь к файлу: ~/bitrix/modules/im/lib/V2/Message/CounterService.php
- Класс: BitrixImV2MessageCounterService
- Вызов: CounterService::getIdFirstUnreadMessageForEachChats
public function getIdFirstUnreadMessageForEachChats(array $chatIds): array
{
if (empty($chatIds))
{
return [];
}
$result = MessageUnreadTable::query()
->setSelect(['CHAT_ID', 'UNREAD_ID' => new ExpressionField('UNREAD_ID', 'MIN(%s)', ['MESSAGE_ID'])])
->whereIn('CHAT_ID', $chatIds)
->where('USER_ID', $this->getContext()->getUserId())
->setGroup(['CHAT_ID'])
->fetchAll() //todo index (CHAT_ID, USER_ID, MESSAGE_ID)
;
$firstUnread = [];
foreach ($result as $row)
{
$firstUnread[(int)$row['CHAT_ID']] = (int)$row['UNREAD_ID'];
}
return $firstUnread;
}