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