- Модуль: 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;
}