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