• Модуль: 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;
}