Provider::getPrimaryProjectsQuery

  1. Bitrix24 API (v. 23.675.0)
  2. tasks
  3. Provider
  4. getPrimaryProjectsQuery
  • Модуль: tasks
  • Путь к файлу: ~/bitrix/modules/tasks/lib/internals/project/provider.php
  • Класс: BitrixTasksInternalsProjectProvider
  • Вызов: Provider::getPrimaryProjectsQuery
public function getPrimaryProjectsQuery(array $select): Query
{
	$query = WorkgroupTable::query();
	$query
		->setSelect($this->prepareQuerySelect($select))
		->registerRuntimeField(
			new Reference(
				'CONTEXT_RELATION',
				UserToGroupTable::getEntity(),
				Join::on('this.ID', 'ref.GROUP_ID')->where('ref.USER_ID', $this->userId),
				['join_type' => 'left']
			)
		)
		->registerRuntimeField(
			'PLA',
			new ReferenceField(
				'PLA',
				ProjectLastActivityTable::getEntity(),
				Join::on('this.ID', 'ref.PROJECT_ID'),
				['join_type' => 'left']
			)
		)
		->registerRuntimeField(
			null,
			new ExpressionField('ACTIVITY_DATE', 'IFNULL(%s, %s)', ['PLA.ACTIVITY_DATE', 'DATE_UPDATE'])
		)
		->registerRuntimeField(
			new Reference(
				'SITE',
				WorkgroupSiteTable::getEntity(),
				Join::on('this.ID', 'ref.GROUP_ID'),
				['join_type' => 'inner']
			)
		)
		->registerRuntimeField(
			'SCRUM',
			new BitrixMainORMFieldsExpressionField(
				'SCRUM',
				"(CASE WHEN %s = 'Y' AND %s > 0 THEN 'Y' ELSE 'N' END)",
				['PROJECT', 'SCRUM_MASTER_ID']
			)
		)
		->registerRuntimeField(
			new Reference(
				'FAVORITES',
				WorkgroupFavoritesTable::getEntity(),
				Join::on('this.ID', 'ref.GROUP_ID')->where('ref.USER_ID', $this->userId),
				['join_type' => 'left']
			)
		)
		->registerRuntimeField(
			new Reference(
				'PIN',
				WorkgroupPinTable::getEntity(),
				Join::on('this.ID', 'ref.GROUP_ID')
					->where('ref.USER_ID', $this->userId)
					->where('ref.CONTEXT', $this->mode)
				,
				['join_type' => 'left']
			)
		)
		->registerRuntimeField(
			'IS_PINNED',
			new ExpressionField(
				'IS_PINNED',
				WorkgroupPinTable::getSelectExpression(),
				['ID', 'PIN.USER_ID', 'PIN.CONTEXT']
			)
		)
	;

	$this->runtimeFieldsManager->add('CONTEXT_RELATION');
	$this->runtimeFieldsManager->add('SITE');
	$this->runtimeFieldsManager->add('SCRUM');
	$this->runtimeFieldsManager->add('FAVORITES');
	$this->runtimeFieldsManager->add('PIN');
	$this->runtimeFieldsManager->add('IS_PINNED');

	return $query;
}

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