• Модуль: rpa
  • Путь к файлу: ~/bitrix/modules/rpa/lib/controller/type.php
  • Класс: BitrixRpaControllerType
  • Вызов: Type::updateAction
public function updateAction(BitrixRpaModelType $type, array $fields, string $eventId = ''): ?array
{
	if(
		$type->getId() > 0
		&& Driver::getInstance()->getBitrix24Manager()->isTypeSettingsRestricted($type->getId())
	)
	{
		$this->addError(new Error(Loc::getMessage('RPA_LIMIT_SETTINGS_TYPE_ERROR')));

		return null;
	}
	$converter = new Converter(Converter::TO_UPPER | Converter::KEYS | Converter::TO_SNAKE);
	$fields = $converter->process($fields);
	unset($fields['ID']);
	foreach($fields as $name => $value)
	{
		if($type->entity->hasField($name))
		{
			$type->set($name, $value);
		}
	}
	$permissionResult = $this->processPermissions($type, $fields);
	if(!$permissionResult->isSaved() && empty($this->getModifyPermissions($permissionResult->getResultPermissions())))
	{
		$this->addError(new Error(Loc::getMessage('RPA_CONTROLLER_TYPE_MODIFY_PERMISSIONS_EMPTY')));
		return null;
	}
	$isNew = !($type->getId() > 0);
	$result = $type->save();
	if($result->isSuccess())
	{
		$permissionResult = $this->savePermissions($type, $permissionResult);
		if(!$permissionResult->isSuccess())
		{
			$this->addErrors($permissionResult->getErrors());
		}
		if(!$isNew)
		{
			Driver::getInstance()->getPullManager()->sendTypeUpdatedEvent($type, $eventId);
		}
		return $this->getAction($type);
	}

	$this->addErrors($result->getErrors());
	return null;
}