• Модуль: timeman
  • Путь к файлу: ~/bitrix/modules/timeman/lib/service/agent/worktimeagentmanager.php
  • Класс: BitrixTimemanServiceAgentWorktimeAgentManager
  • Вызов: WorktimeAgentManager::createTimeLackForPeriodChecking
public function createTimeLackForPeriodChecking($schedule, $fromDateTime = null, $violationRules = null)
{
	if (!$schedule || !$violationRules)
	{
		return new Result();
	}
	if ($schedule->isReportPeriodOptionsChanged() || $schedule->isReportPeriodChanged())
	{
		$recountResult = $this->recountPeriodTimeLackAgents($schedule);
		if (!$recountResult->isSuccess())
		{
			return $recountResult;
		}
	}
	if (!$this->isPeriodTimeLackControlEnabled($schedule, $violationRules))
	{
		if ($violationRules->getPeriodTimeLackAgentId() > 0)
		{
			$this->deleteAgentById($violationRules->getPeriodTimeLackAgentId());
			$violationRules->setPeriodTimeLackAgentId(0);
			$this->violationRulesRepository->save($violationRules);
		}
		return new Result();
	}
	if ($violationRules->getPeriodTimeLackAgentId() > 0)
	{
		return new Result();
	}

	$fields = $this->preparePeriodTimeLackAgentFields($schedule, $violationRules, $fromDateTime);
	$id = $this->addAgent($fields);
	if ($id > 0)
	{
		$violationRules->setPeriodTimeLackAgentId($id);
		return $this->violationRulesRepository->save($violationRules);
	}

	return (new Result())->addError(new Error('Failed to create Period Time Lack Checking Agent', 'createTimeLackForPeriodCheckingError'));
}