SynchronizeEntityCountableDataAgent::resetCounterByEntity

  1. Bitrix24 API (v. 23.675.0)
  2. crm
  3. SynchronizeEntityCountableDataAgent
  4. resetCounterByEntity
  • Модуль: crm
  • Путь к файлу: ~/bitrix/modules/crm/lib/agent/activity/synchronizeentitycountabledataagent.php
  • Класс: Bitrix\Crm\Agent\Activity\SynchronizeEntityCountableDataAgent
  • Вызов: SynchronizeEntityCountableDataAgent::resetCounterByEntity
private function resetCounterByEntity($entityTypeId,  $entityId): void
{
	$factory = Container::getInstance()->getFactory($entityTypeId);
	if (!$factory)
	{
		return;
	}
	if (!$factory->isCountersEnabled())
	{
		return;
	}
	$assignedByFiledName = $factory->getEntityFieldNameByMap(Item::FIELD_NAME_ASSIGNED);
	$categoryIdFieldName = $factory->getEntityFieldNameByMap(Item::FIELD_NAME_CATEGORY_ID);

	$select = [
		Item::FIELD_NAME_ID,
	];
	if ($factory->isFieldExists(Item::FIELD_NAME_ASSIGNED))
	{
		$select[] = $assignedByFiledName;
	}
	if ($factory->isFieldExists(Item::FIELD_NAME_CATEGORY_ID))
	{
		$select[] = $categoryIdFieldName;
	}

	$entity = $factory->getDataClass()::query()
		->setSelect($select)
		->whereIn('ID', $entityId)
		->fetch()
	;
	if (!$entity)
	{
		return;
	}
	$extras = [];
	if ($factory->isCategoriesEnabled())
	{
		$extras['CATEGORY_ID'] = $entity[$categoryIdFieldName];
	}
	$responsibleId = $entity[$assignedByFiledName];

	$counterCodes = EntityCounterManager::prepareCodes(
		$entityTypeId,
		EntityCounterType::getAll(true),
		$extras
	);

	if(!empty($counterCodes))
	{
		EntityCounterManager::reset($counterCodes, [$responsibleId]);
		EntityCounterManager::resetExcludeUsersCounters($counterCodes, [$responsibleId]);
	}
}

Добавить комментарий