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