- Модуль: timeman
- Путь к файлу: ~/bitrix/modules/timeman/lib/repository/worktime/worktimerepository.php
- Класс: BitrixTimemanRepositoryWorktimeWorktimeRepository
- Вызов: WorktimeRepository::findAll
public function findAll($selectFields, ConditionTree $whereConditions)
{
$query = WorktimeRecordTable::query();
foreach ($selectFields as $selectField)
{
if (in_array($selectField, ['SHIFT', 'SCHEDULE'], true))
{
continue;
}
$query->addSelect($selectField);
}
$query->where($whereConditions);
$records = $query->exec()->fetchCollection();
if ($records->count() === 0)
{
return $records;
}
if (in_array('SCHEDULE', $selectFields, true))
{
$scheduleIds = array_filter($records->getScheduleIdList(), function ($id) {
return $id > 0;
});
if (!empty($scheduleIds))
{
$schedules = ScheduleTable::query()
->addSelect('*')
->whereIn('ID', $scheduleIds)
->exec()
->fetchCollection();
foreach ($records as $record)
{
if ($record->getScheduleId() > 0 && $schedule = $schedules->getByPrimary($record->getScheduleId()))
{
$record->defineSchedule($schedule);
}
}
}
}
if (in_array('SHIFT', $selectFields, true))
{
$shiftIds = array_filter($records->getShiftIdList(), function ($id) {
return $id > 0;
});
if (!empty($shiftIds))
{
$shifts = ShiftTable::query()
->addSelect('*')
->whereIn('ID', $shiftIds)
->exec()
->fetchCollection();
foreach ($records as $record)
{
if ($record->getShiftId() > 0 && $shift = $shifts->getByPrimary($record->getShiftId()))
{
$record->defineShift($shift);
}
}
}
}
return $records;
}