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