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