SynchronizeEntityCountableDataAgent::getUncompletedActivityList

  1. Bitrix24 API (v. 23.675.0)
  2. crm
  3. SynchronizeEntityCountableDataAgent
  4. getUncompletedActivityList
  • Модуль: crm
  • Путь к файлу: ~/bitrix/modules/crm/lib/agent/activity/synchronizeentitycountabledataagent.php
  • Класс: Bitrix\Crm\Agent\Activity\SynchronizeEntityCountableDataAgent
  • Вызов: SynchronizeEntityCountableDataAgent::getUncompletedActivityList
private function getUncompletedActivityList(int $lastId, int $limit): array
{
	$uncompletedActivities = EntityUncompletedActivityTable::query()
		->setSelect([
			'ID',
			'ACTIVITY_ID',
			'ENTITY_TYPE_ID',
			'ENTITY_ID',
			'RESPONSIBLE_ID',
			'MIN_DEADLINE',
		])
		->where('ID', '>', $lastId)
		->setLimit($limit)
		->setOrder(['ID' => 'ASC'])
		->fetchAll()
	;
	$activitiesIds = array_column($uncompletedActivities, 'ACTIVITY_ID');
	if (empty($activitiesIds))
	{
		return [];
	}
	$activitiesIds = array_unique($activitiesIds);

	$activitiesData = [];
	$activitiesDeadlinesIterator = ActivityTable::query()
		->whereIn('ID', $activitiesIds)
		->setSelect(['COMPLETED', 'ID', 'DEADLINE'])
		->exec();
	while ($activity = $activitiesDeadlinesIterator->fetch())
	{
		$activitiesData[$activity['ID']] = [
			'COMPLETED' => ($activity['COMPLETED'] === 'Y'),
			'DEADLINE' => $activity['DEADLINE'],
		];
	}

	foreach ($uncompletedActivities as $i => $uncompletedActivity)
	{
		$uncompletedActivities[$i]['COMPLETED'] = (bool)$activitiesData[$uncompletedActivity['ACTIVITY_ID']]['COMPLETED'];
		$uncompletedActivities[$i]['DELETED'] = !array_key_exists($uncompletedActivity['ACTIVITY_ID'],
			$activitiesData);
		$uncompletedActivities[$i]['REAL_DEADLINE'] =
			$activitiesData[$uncompletedActivity['ACTIVITY_ID']]['DEADLINE'] ?? $uncompletedActivity['MIN_DEADLINE'];
	}

	return $uncompletedActivities;
}

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