CCrmRestProxyBase::processMethodRequest

  1. Bitrix24 API (v. 23.675.0)
  2. crm
  3. CCrmRestProxyBase
  4. processMethodRequest
  • Модуль: crm
  • Путь к файлу: ~/bitrix/modules/crm/classes/general/restservice.php
  • Класс: \CCrmRestProxyBase
  • Вызов: CCrmRestProxyBase::processMethodRequest
public function processMethodRequest($name, $nameDetails, $arParams, $nav, $server)
{
	$ownerTypeID = $this->getOwnerTypeID();

	$name = mb_strtoupper($name);
	if($name === 'FIELDS')
	{
		return $this->getFields();
	}
	elseif($name === 'ADD')
	{
		$fields = $this->resolveArrayParam($arParams, 'fields');
		if(!is_array($fields))
		{
			throw new RestException("Parameter 'fields' must be array.");
		}

		$methodParams = $this->resolveArrayParam($arParams, 'params');
		if(!is_array($methodParams))
		{
			throw new RestException("Parameter 'params' must be array.");
		}

		return $this->add($fields, $methodParams);
	}
	elseif($name === 'GET')
	{
		return $this->get($this->resolveEntityID($arParams));
	}
	elseif($name === 'LIST')
	{
		$order = $this->resolveArrayParam($arParams, 'order');
		if(!is_array($order))
		{
			throw new RestException("Parameter 'order' must be array.");
		}

		$filter = $this->resolveArrayParam($arParams, 'filter');
		if(!is_array($filter))
		{
			throw new RestException("Parameter 'filter' must be array.");
		}

		$select = $this->resolveArrayParam($arParams, 'select');
		return $this->getList($order, $filter, $select, $nav);
	}
	elseif($name === 'UPDATE')
	{
		$ID = $this->resolveEntityID($arParams);

		$fields = $fields = $this->resolveArrayParam($arParams, 'fields');
		if(!is_array($fields))
		{
			throw new RestException("Parameter 'fields' must be array.");
		}

		$methodParams = $this->resolveArrayParam($arParams, 'params');
		if(!is_array($methodParams))
		{
			throw new RestException("Parameter 'params' must be array.");
		}

		return $this->update($ID, $fields, $methodParams);
	}
	elseif($name === 'DELETE')
	{
		$ID = $this->resolveEntityID($arParams);
		$methodParams = $this->resolveArrayParam($arParams, 'params');
		return $this->delete($ID, $methodParams);
	}
	elseif($name === 'USERFIELD' && $ownerTypeID !== CCrmOwnerType::Undefined)
	{
		$ufProxy = new CCrmUserFieldRestProxy($ownerTypeID);

		$nameSuffix = mb_strtoupper(!empty($nameDetails)? implode('_', $nameDetails) : '');
		if($nameSuffix === 'ADD')
		{
			$fields = $this->resolveArrayParam($arParams, 'fields', null);
			return $ufProxy->add(is_array($fields) ? $fields : $arParams);
		}
		elseif($nameSuffix === 'GET')
		{
			return $ufProxy->get($this->resolveEntityID($arParams));
		}
		elseif($nameSuffix === 'LIST')
		{
			$order = $this->resolveArrayParam($arParams, 'order', array());
			if(!is_array($order))
			{
				throw new RestException("Parameter 'order' must be array.");
			}

			$filter = $this->resolveArrayParam($arParams, 'filter', array());
			if(!is_array($filter))
			{
				throw new RestException("Parameter 'filter' must be array.");
			}

			return $ufProxy->getList($order, $filter);
		}
		elseif($nameSuffix === 'UPDATE')
		{
			$ID = $this->resolveEntityID($arParams);

			$fields = $fields = $this->resolveArrayParam($arParams, 'fields');
			if(!is_array($fields))
			{
				throw new RestException("Parameter 'fields' must be array.");
			}

			return $ufProxy->update($ID, $fields);
		}
		elseif($nameSuffix === 'DELETE')
		{
			return $ufProxy->delete($this->resolveEntityID($arParams));
		}
	}
	elseif($name === 'DETAILS')
	{
		$editorRequestDetails = $nameDetails;
		$editorRequestName = array_shift($editorRequestDetails);
		$entityEditorProxy = new CCrmEntityEditorRestProxy($ownerTypeID);
		return $entityEditorProxy->processMethodRequest($editorRequestName, $editorRequestDetails, $arParams, $nav, $server);
	}

	throw new RestException("Resource '{$name}' is not supported in current context.");
}

Добавить комментарий