• Модуль: voximplant
  • Путь к файлу: ~/bitrix/modules/voximplant/classes/general/vi_rest.php
  • Класс: CVoxImplantRestService
  • Вызов: CVoxImplantRestService::sipUpdate
static function sipUpdate($arParams, $nav, $server)
{
	$permissions = SecurityPermissions::createWithCurrentUser();
	if (!$permissions->canPerform(SecurityPermissions::ENTITY_LINE, SecurityPermissions::ACTION_MODIFY))
	{
		throw new BitrixRestAccessException();
	}

	$arParams = array_change_key_case($arParams, CASE_UPPER);
	$arParams['CONFIG_ID'] ??= null;
	$arParams['TYPE'] ??= null;
	$arParams['TITLE'] ??= null;
	$arParams['SERVER'] ??= null;
	$arParams['LOGIN'] ??= null;
	$arParams['PASSWORD'] ??= null;

	$dbResCnt = BitrixVoximplantSipTable::getList([
		'filter' => [
			'CONFIG_ID' => $arParams["CONFIG_ID"],
			'APP_ID' => $server->getAppId()
		],
		'select' => ["CNT" => new BitrixMainEntityExpressionField('CNT', 'COUNT(1)')],
	]);
	$arResCnt = $dbResCnt->fetch();
	if (!$arResCnt || $arResCnt["CNT"] <= 0)
	{
		throw new BitrixRestRestException("Specified CONFIG_ID is not found", BitrixRestRestException::ERROR_NOT_FOUND, CRestServer::STATUS_NOT_FOUND);
	}

	if (!isset($arParams['TYPE']))
	{
		$arParams['TYPE'] = CVoxImplantSip::TYPE_CLOUD;
	}

	$arUpdate = [
		'TYPE' => $arParams['TYPE'],
		'NEED_UPDATE' => "Y",
	];
	if (isset($arParams['TITLE']))
	{
		$arUpdate['TITLE'] = $arParams['TITLE'];
	}
	if (isset($arParams['SERVER']))
	{
		$arUpdate['SERVER'] = $arParams['SERVER'];
	}
	if (isset($arParams['LOGIN']))
	{
		$arUpdate['LOGIN'] = $arParams['LOGIN'];
	}
	if (isset($arParams['PASSWORD']))
	{
		$arUpdate['PASSWORD'] = $arParams['PASSWORD'];
	}

	if (count($arUpdate) == 2)
	{
		return 1;
	}

	$viSip = new CVoxImplantSip();
	$result = $viSip->Update($arParams["CONFIG_ID"], $arUpdate);
	if (!$result || $viSip->GetError()->error)
	{
		throw new BitrixRestRestException($viSip->GetError()->msg, $viSip->GetError()->code, CRestServer::STATUS_WRONG_REQUEST);
	}

	return 1;
}