• Модуль: tasks
  • Путь к файлу: ~/bitrix/modules/tasks/lib/internals/effective.php
  • Класс: BitrixTasksInternalsEffective
  • Вызов: Effective::getInProgressTasksCountForNow
static function getInProgressTasksCountForNow($userId, $groupId = 0)
{
	$expressions = [
		'COUNT' => new EntityExpressionField('COUNT', 'COUNT(%s)', 'ID'),
		'DATE' => new EntityExpressionField('DATE', 'DATE(%s)', 'CLOSED_DATE'),
		'NOW' => new MainDBSqlExpression('DATE(NOW())')
	];

	$query = new Query(TaskTable::getEntity());

	$query->setSelect([$expressions['COUNT']]);
	$query->registerRuntimeField('TM', new EntityReferenceField(
		'TM',
		MemberTable::getEntity(),
		Join::on('this.ID', 'ref.TASK_ID')
			->where('ref.USER_ID', $userId)
			->whereIn('ref.TYPE', ['R', 'A']),
		['join_type' => 'inner']
	));
	$query
		->where(
			Query::filter()
				->logic('or')
				->where(
					Query::filter()
						->where('TM.TYPE', 'R')
						->whereColumn('CREATED_BY', '<>', 'RESPONSIBLE_ID')
				)
				->where(
					Query::filter()
						->where('TM.TYPE', 'A')
						->where('CREATED_BY', '<>', $userId)
						->where('RESPONSIBLE_ID', '<>', $userId)
				)
		)
		->where(
			Query::filter()
				->logic('or')
				->where(
					Query::filter()
						->where('CLOSED_DATE', NULL)
						->where('STATUS', '<>', Status::DEFERRED)
				)
				->where($expressions['DATE'], $expressions['NOW'])
		)
		->where(($groupId? Query::filter()->where('GROUP_ID', $groupId) : []));

	$count = $query->exec()->fetch();

	return $count['COUNT'];
}