• Модуль: timeman
  • Путь к файлу: ~/bitrix/modules/timeman/lib/repository/schedule/schedulerepository.php
  • Класс: BitrixTimemanRepositoryScheduleScheduleRepository
  • Вызов: ScheduleRepository::findByIdWith
public function findByIdWith($id, $withEntities = [])
{
	$query = $this->getActiveSchedulesQuery()
		->addSelect('*')
		->where('ID', $id);

	foreach ($withEntities as $with)
	{
		switch ($with)
		{
			case 'SCHEDULE_VIOLATION_RULES':
				$query->addSelect('SCHEDULE_VIOLATION_RULES');
				break;
			case 'SHIFTS':
				$query->addSelect($with);
				$query->where(Query::filter()->logic('or')
					->where('SHIFTS.DELETED', ShiftTable::DELETED_NO)
					->whereNull('SHIFTS.DELETED')
				);
				$query->addOrder('SHIFTS.ID');
				break;
			case 'CALENDAR':
			case 'CALENDAR.EXCLUSIONS':
			case 'CALENDAR.PARENT_CALENDAR.EXCLUSIONS':
			case 'CALENDAR.PARENT_CALENDAR.ID':
				$query->addSelect($with);
				break;
			default:
				break;
		}
	}
	/** @var Schedule $schedule */
	$schedule = $query->exec()->fetchObject();
	if ($schedule && (in_array('DEPARTMENTS', $withEntities, true) || in_array('DEPARTMENT_ASSIGNMENTS', $withEntities, true))
	)
	{
		$depAssigns = ScheduleDepartmentTable::query()
			->addSelect('*')
			->where('SCHEDULE_ID', $schedule->getId())
			->exec()
			->fetchCollection();
		foreach ($depAssigns as $depAssign)
		{
			$schedule->addTo('DEPARTMENT_ASSIGNMENTS', $depAssign);
		}
	}
	if ($schedule && in_array('USER_ASSIGNMENTS', $withEntities, true))
	{
		$userAssigns = ScheduleUserTable::query()
			->addSelect('*')
			->where('SCHEDULE_ID', $schedule->getId())
			->exec()
			->fetchCollection();
		foreach ($userAssigns as $userAssign)
		{
			$schedule->addTo('USER_ASSIGNMENTS', $userAssign);
		}
	}
	return $schedule;
}