• Модуль: crm
  • Путь к файлу: ~/bitrix/modules/crm/lib/activity/provider/openline.php
  • Класс: Bitrix\Crm\Activity\Provider\OpenLine
  • Вызов: OpenLine::syncBadges
static function syncBadges(int $activityId, array $activityFields, array $bindings): void
{
	$badge = Container::getInstance()->getBadge(
		Badge\Type\OpenLineStatus::OPENLINE_STATUS_TYPE,
		Badge\Type\OpenLineStatus::CHAT_NOT_READ_VALUE,
	);

	$sourceIdentifier = new Badge\SourceIdentifier(
		Badge\SourceIdentifier::CRM_OWNER_TYPE_PROVIDER,
		CCrmOwnerType::Activity,
		$activityId,
	);

	$userCode = $activityFields['PROVIDER_PARAMS']['USER_CODE'] ?? null;
	$responsibleId = $activityFields['RESPONSIBLE_ID'] ?? null;
	$isNotReadChat = OpenLineManager::getChatUnReadMessages($userCode, $responsibleId) > 0;
	if ($isNotReadChat)
	{
		foreach ($bindings as $singleBinding)
		{
			$itemIdentifier = new ItemIdentifier((int)$singleBinding['OWNER_TYPE_ID'], (int)$singleBinding['OWNER_ID']);
			$badge->bind($itemIdentifier, $sourceIdentifier);
		}
	}
	else
	{
		foreach ($bindings as $singleBinding)
		{
			$itemIdentifier = new ItemIdentifier((int)$singleBinding['OWNER_TYPE_ID'], (int)$singleBinding['OWNER_ID']);
			$badge->unbind($itemIdentifier, $sourceIdentifier);
		}
	}
}