• Модуль: crm
  • Путь к файлу: ~/bitrix/modules/crm/lib/component/entitylist/nearestactivity/manager.php
  • Класс: Bitrix\Crm\Component\EntityList\NearestActivity\Manager
  • Вызов: Manager::getNearestActivitiesIds
private function getNearestActivitiesIds(array $entityIds): array
{
	if (empty($entityIds))
	{
		return [];
	}

	$myNearestActivitiesIterator = EntityUncompletedActivityTable::query()
		->where('ENTITY_TYPE_ID', $this->entityTypeId)
		->whereIn('ENTITY_ID', $entityIds)
		->where('RESPONSIBLE_ID', $this->userId)
		->setSelect(['ACTIVITY_ID', 'ENTITY_ID'])
		->exec()
	;
	$entityActivities = [];
	while ($myNearestActivity = $myNearestActivitiesIterator->fetch())
	{
		$entityActivities[$myNearestActivity['ACTIVITY_ID']] = $myNearestActivity['ENTITY_ID'];
	}
	$entitiesWithoutMyActivities = array_diff($entityIds, array_values($entityActivities));
	if (!empty($entitiesWithoutMyActivities))
	{
		$allNearestActivitiesIterator = EntityUncompletedActivityTable::query()
			->where('ENTITY_TYPE_ID', $this->entityTypeId)
			->whereIn('ENTITY_ID', $entitiesWithoutMyActivities)
			->where('RESPONSIBLE_ID', 0) // 0 means all users
			->setSelect(['ACTIVITY_ID', 'ENTITY_ID'])
			->exec()
		;
		while ($aNearestActivity = $allNearestActivitiesIterator->fetch())
		{
			$entityActivities[$aNearestActivity['ACTIVITY_ID']] = $aNearestActivity['ENTITY_ID'];
		}
	}

	return $entityActivities;
}