- Модуль: crm
- Путь к файлу: ~/bitrix/modules/crm/lib/integration/sender/segment.php
- Класс: Bitrix\Crm\Integration\Sender\Segment
- Вызов: Segment::getAddresses
static function getAddresses($entityTypeName, array $entities)
{
if (!$entities)
{
return [];
}
switch ($entityTypeName)
{
case \CCrmOwnerType::CompanyName:
$entityObject = new \CCrmCompany();
break;
case \CCrmOwnerType::ContactName:
$entityObject = new \CCrmContact();
break;
case \CCrmOwnerType::LeadName:
$entityObject = new \CCrmLead();
break;
default:
return [];
}
$listDb = $entityObject->getListEx([], ['ID' => $entities], false, false, ['ID', 'NAME', 'TITLE', 'CONTACT_NAME']);
$entities = [];
while ($entity = $listDb->Fetch())
{
$entityName = isset($entity['TITLE']) ? $entity['TITLE'] : null;
$entityName = isset($entity['NAME']) ? $entity['NAME'] : $entityName;
$entityName = isset($entity['CONTACT_NAME']) ? $entity['CONTACT_NAME'] : $entityName;
$entities[$entity['ID']] = $entityName;
}
$result = [];
$typeMap = [
\CCrmFieldMulti::PHONE => Sender\Recipient\Type::PHONE,
\CCrmFieldMulti::EMAIL => Sender\Recipient\Type::EMAIL,
];
$list = Crm\FieldMultiTable::getList([
'select' => ['TYPE_ID', 'VALUE', 'ELEMENT_ID'],
'filter' => [
'=ENTITY_ID' => $entityTypeName,
'=ELEMENT_ID' => array_keys($entities),
'=TYPE_ID' => array_keys($typeMap)
],
]);
foreach ($list as $item)
{
$result[] = [
'CODE' => $item['VALUE'],
'NAME' => isset($entities[$item['ELEMENT_ID']])
? $entities[$item['ELEMENT_ID']]
: null
,
];
}
return $result;
}