- Модуль: 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;
}