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