FillLightCounterPart1::queryUncompletedActivitiesToProcess

  1. Bitrix24 API (v. 23.675.0)
  2. crm
  3. FillLightCounterPart1
  4. queryUncompletedActivitiesToProcess
  • Модуль: crm
  • Путь к файлу: ~/bitrix/modules/crm/lib/agent/activity/lightcounter/filllightcounterpart1.php
  • Класс: Bitrix\Crm\Agent\Activity\LightCounter\FillLightCounterPart1
  • Вызов: FillLightCounterPart1::queryUncompletedActivitiesToProcess
private function queryUncompletedActivitiesToProcess(int $lastId): array
{
	$activitiesIds = ActivityTable::query()
		->setSelect(['ID'])
		->where('ID', '>', $lastId)
		->where('COMPLETED', '=', 'N')
		->setOrder(['ID' => 'ASC'])
		->setLimit(self::BATCH_SIZE)
		->fetchAll();

	if (empty($activitiesIds))
	{
		return [];
	}

	$activitiesIds = array_column($activitiesIds, 'ID');

	$activities = ActivityTable::query()
		->setSelect(['ID', 'NOTIFY_TYPE', 'NOTIFY_VALUE', 'DEADLINE'])
		->whereIn('ID', $activitiesIds)
		->fetchAll();

	$offsets = ActivityPingOffsetsTable::query()
		->addSelect('ACTIVITY_ID')
		->addSelect('MAX_OFFSET')
		->registerRuntimeField('', new ExpressionField('MAX_OFFSET', 'MAX(OFFSET)'))
		->whereIn('ACTIVITY_ID', $activitiesIds)
		->setGroup('ACTIVITY_ID')
		->fetchAll();

	$offsetKeyVal = [];
	foreach ($offsets as $offset)
	{
		$offsetKeyVal[$offset['ACTIVITY_ID']] = $offset['MAX_OFFSET'];
	}

	foreach ($activities as &$activity)
	{
		$activity['MAX_OFFSET'] = $offsetKeyVal[$activity['ID']] ?? null;
	}

	return $activities;
}

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