• Модуль: voximplant
  • Путь к файлу: ~/bitrix/modules/voximplant/lib/transfer/transferor.php
  • Класс: BitrixVoximplantTransferTransferor
  • Вызов: Transferor::completeTransfer
static function completeTransfer($callId, $newUserId, $device)
{
	$result = new Result();
	$newUserId = (int)$newUserId;

	$transferCall = Call::load($callId);
	if(!$transferCall)
	{
		return $result->addError(new Error('Call ' . $callId . ' is not found'));
	}
	$parentCallId = $transferCall->getParentCallId();
	$parentCall = Call::load($parentCallId);
	if(!$parentCall)
	{
		return $result->addError(new Error('Parent call ' . $parentCallId . ' is not found'));
	}

	$transferorUserId = $transferCall->getUserId();

	if($newUserId == 0)
	{
		$newUserId = CVoxImplantUser::GetByPhone($transferCall->getCallerId());
	}
	if($newUserId > 0)
	{
		if($parentCall->getUserId() == $transferorUserId)
		{
			$parentCall->updateUserId($newUserId);
		}
		else if($parentCall->getPortalUserId() == $transferorUserId)
		{
			$parentCall->updatePortalUserId($newUserId);
		}
		$parentCall->addUsers([$newUserId], CallUserTable::ROLE_CALLEE, CallUserTable::STATUS_CONNECTED);

		if ($parentCall->isCrmEnabled())
		{
			$config = $parentCall->getConfig();
			if (isset($config['CRM_TRANSFER_CHANGE']) && $config['CRM_TRANSFER_CHANGE'] == 'Y')
			{
				CVoxImplantCrmHelper::updateCrmEntities($parentCall->getCreatedCrmEntities(), ['ASSIGNED_BY_ID' => $newUserId]);
			}
		}

		$transferCall->getSignaling()->sendCompleteTransfer($newUserId, $parentCall->getCallId(), $device);

		CVoxImplantHistory::TransferMessage($transferorUserId, $newUserId, $parentCall->getCallerId());
	}
	$transferCall->removeUsers([$transferorUserId], false);
	$parentCall->removeUsers([$transferorUserId]);

	Call::delete($callId);
	return $result;
}