• Модуль: timeman
  • Путь к файлу: ~/bitrix/modules/timeman/lib/service/worktime/violation/worktimeviolationbuilder.php
  • Класс: BitrixTimemanServiceWorktimeViolationWorktimeViolationBuilder
  • Вызов: WorktimeViolationBuilder::isUserWasAbsent
protected function isUserWasAbsent($userId, $recordDateTime)
{
	if ($this->getAbsenceData() === null || !array_key_exists($userId, $this->getAbsenceData()))
	{
		$absenceData = $this->findAbsenceData($userId, $recordDateTime);
		$data = $this->getAbsenceData();
		$data[$userId] = empty($absenceData) ? [] : (array)$absenceData[$userId];
		$this->setAbsenceData($data);
	}
	if (empty($this->getAbsenceData()[$userId]))
	{
		return false;
	}
	foreach ($this->getAbsenceData()[$userId] as $absenceFields)
	{
		if (empty($absenceFields['tm_absStartDateTime']) ||
			empty($absenceFields['tm_absEndDateTime']))
		{
			continue;
		}
		/** @var DateTime $dateFrom */
		$dateFrom = clone $absenceFields['tm_absStartDateTime'];
		$dateFrom->setTimezone($recordDateTime->getTimezone());
		/** @var DateTime $dateTo */
		$dateTo = clone $absenceFields['tm_absEndDateTime'];
		$dateTo->setTimezone($recordDateTime->getTimezone());
		if (!($dateFrom && $dateTo))
		{
			return false;
		}
		if ($dateFrom->format('d.m.Y') === $recordDateTime->format('d.m.Y')
			||
			$dateTo->format('d.m.Y') === $recordDateTime->format('d.m.Y')
		)
		{
			return true;
		}

		if ($recordDateTime->getTimestamp() >= $dateFrom->getTimestamp()
			&& $recordDateTime->getTimestamp() <= $dateTo->getTimestamp())
		{
			return true;
		}
	}
	return false;
}