- Модуль: voximplant
- Путь к файлу: ~/bitrix/modules/voximplant/lib/rest/helper.php
- Класс: BitrixVoximplantRestHelper
- Вызов: Helper::searchCrmEntities
static function searchCrmEntities($phoneNumber)
{
$result = new Result();
if (!Loader::includeModule('crm'))
{
$result->addError(new Error('CRM is not installed.'));
return $result;
}
$timeManInstalled = Loader::includeModule('timeman');
$userId = SecurityHelper::getCurrentUserId();
$searchResult = CCrmSipHelper::findByPhoneNumber($phoneNumber, ['USER_ID' => $userId]);
$resultData = [];
$userIds = [];
$entities = [];
$entityNames = [CCrmOwnerType::ContactName, CCrmOwnerType::LeadName, CCrmOwnerType::CompanyName];
foreach ($entityNames as $entityName)
{
if (isset($searchResult[$entityName]))
{
foreach ($searchResult[$entityName] as $entityData)
{
$resultData[] = [
'CRM_ENTITY_TYPE' => $entityName,
'CRM_ENTITY_ID' => $entityData['ID'],
'ASSIGNED_BY_ID' => $entityData['ASSIGNED_BY_ID']
];
$userIds[] = $entityData['ASSIGNED_BY_ID'];
$entities[] = [
'TYPE' => $entityName,
'ID' => $entityData['ID']
];
}
}
}
$crmEntityFields = CVoxImplantCrmHelper::resolveEntitiesFields($entities);
foreach ($resultData as $k => $v)
{
if (isset($crmEntityFields[$v['CRM_ENTITY_TYPE'] . ':' . $v['CRM_ENTITY_ID']]))
{
$resultData[$k]['NAME'] = $crmEntityFields[$v['CRM_ENTITY_TYPE'] . ':' . $v['CRM_ENTITY_ID']]['NAME'];
}
}
$userCursor = UserTable::getList([
'select' => ['ID', 'UF_PHONE_INNER', 'WORK_PHONE', 'PERSONAL_PHONE' , 'PERSONAL_MOBILE'],
'filter' => [
'=ID' => $userIds
]
]);
$userData = [];
while ($row = $userCursor->fetch())
{
$userId = $row['ID'];
$userData[$userId] = $row;
if ($timeManInstalled)
{
$tmUser = new CTimeManUser($userId);
$tmSettings = $tmUser->GetSettings(['UF_TIMEMAN']);
if (!$tmSettings['UF_TIMEMAN'])
{
$userData[$userId]['TIMEMAN_STATUS'] = 'UNAVAILABLE';
}
else
{
$userData[$userId]['TIMEMAN_STATUS'] = $tmUser->State();
}
}
else
{
$userData[$userId]['TIMEMAN_STATUS'] = 'NOT_INSTALLED';
}
}
foreach ($resultData as $k => $v)
{
$row = $userData[$v['ASSIGNED_BY_ID']];
$resultData[$k]['ASSIGNED_BY'] = [
'ID' => $row['ID'],
'TIMEMAN_STATUS' => $row['TIMEMAN_STATUS'],
'USER_PHONE_INNER' => $row['UF_PHONE_INNER'],
'WORK_PHONE' => $row['WORK_PHONE'],
'PERSONAL_PHONE' => $row['PERSONAL_PHONE'],
'PERSONAL_MOBILE' => $row['PERSONAL_MOBILE'],
];
}
$result->setData($resultData);
return $result;
}