• Модуль: timeman
  • Путь к файлу: ~/bitrix/modules/timeman/lib/service/schedule/violationrulesservice.php
  • Класс: BitrixTimemanServiceScheduleViolationRulesService
  • Вызов: ViolationRulesService::update
public function update(ViolationForm $violationForm, $schedule = null)
{
	$violationRules = null;
	if ($schedule && $schedule->obtainScheduleViolationRules())
	{
		$violationRules = $schedule->obtainScheduleViolationRules();
	}
	if (!$violationRules)
	{
		$violationRules = $this->violationRulesRepository->findByScheduleIdEntityCode($violationForm->scheduleId, $violationForm->entityCode);
		if (!$violationRules)
		{
			return (new ViolationRulesServiceResult())->addViolationRulesNotFoundError();
		}
	}
	if (!$schedule && !($schedule = $this->violationRulesRepository->findScheduleById($violationForm->scheduleId)))
	{
		return (new ViolationRulesServiceResult())->addScheduleNotFoundError();
	}
	$violationForm = clone $violationForm;
	$this->adjustViolationFormFields($violationForm, $schedule);
	$violationRules->edit($violationForm);
	$res = $this->violationRulesRepository->save($violationRules);
	if (!$res->isSuccess())
	{
		return ViolationRulesServiceResult::createByResult($res);
	}

	$this->worktimeAgentManager->createTimeLackForPeriodChecking($schedule, null, $violationRules);

	return (new ViolationRulesServiceResult())
		->setViolationRules($violationRules);
}