• Модуль: timeman
  • Путь к файлу: ~/bitrix/modules/timeman/lib/service/agent/worktimeagentmanager.php
  • Класс: BitrixTimemanServiceAgentWorktimeAgentManager
  • Вызов: WorktimeAgentManager::createAutoClosingAgent
public function createAutoClosingAgent(WorktimeRecord $record, ?Schedule $schedule, ?Shift $shift)
{
	$recordManager = new WorktimeRecordManager(
		$record,
		$schedule,
		$shift,
		TimeHelper::getInstance()->getUserDateTimeNow($record->getUserId()),
		new ShiftsManager(
			$record->getUserId(),
			$this->scheduleProvider->findSchedulesCollectionByUserId($record->getUserId()),
			$this->shiftPlanProvider
		)
	);
	if (!$recordManager->getSchedule() || !$recordManager->getSchedule()->isAutoClosing()
		|| $recordManager->getRecord()->getRecordedStopTimestamp() > 0
		|| $recordManager->getRecord()->getAutoClosingAgentId() > 0
	)
	{
		return;
	}
	$recordStopUtcTimestamp = $recordManager->buildStopTimestampForAutoClose();
	if ($recordStopUtcTimestamp === null)
	{
		return;
	}

	$agentId = $this->addAgent([
		'PARAMS' => [
			'recordId' => $recordManager->getRecord()->getId(),
		],
		'NAME' => 'Bitrix\Timeman\Service\Agent\AutoCloseWorktimeAgent::runCloseRecord',
		'MODULE_ID' => 'timeman',
		'ACTIVE' => 'Y',
		'IS_PERIOD' => 'N',
		'NEXT_EXEC' => TimeHelper::getInstance()->createUserDateTimeFromFormat('U', $recordStopUtcTimestamp, $recordManager->getRecord()->getUserId()),
		'USER_ID' => false,
	]);
	if ($agentId > 0)
	{
		$recordManager->getRecord()->setAutoClosingAgentId($agentId);
	}
}