- Модуль: timeman
- Путь к файлу: ~/bitrix/modules/timeman/lib/service/worktime/action/shiftsmanager.php
- Класс: BitrixTimemanServiceWorktimeActionShiftsManager
- Вызов: ShiftsManager::calculateShiftsWithDate
private function calculateShiftsWithDate(Schedule $schedule, DateTime $userDateTime, $checkRelevant = true, $daysToCheck = 0, ?ShiftWithDate $previousShiftWithDate = null): array
{
$possibleShifts = [];
$periodIterator = $this->buildDatesIterator($userDateTime, $daysToCheck);
foreach ($periodIterator as $date)
{
foreach ($this->getShiftsByDate($schedule, $date) as $shift)
{
$shift = new ShiftWithDate($shift, $schedule, $date);
if ($previousShiftWithDate)
{
if ($previousShiftWithDate->isEqualsTo($shift) ||
$shift->getDateTimeStart()->getTimestamp() < $previousShiftWithDate->getDateTimeStart()->getTimestamp())
{
continue;
}
}
if ($shift->endedByTime($userDateTime) || ($checkRelevant && !$shift->isEligibleToStart($userDateTime)))
{
continue;
}
$possibleShifts[] = $shift;
}
}
return $possibleShifts;
}