• Модуль: crm
  • Путь к файлу: ~/bitrix/modules/crm/lib/binding/leadcontact.php
  • Класс: Bitrix\Crm\Binding\LeadContactTable
  • Вызов: LeadContactTable::bindContacts
static function bindContacts($leadID, array $bindings)
{
	$leadID = (int)$leadID;
	if($leadID <= 0)
	{
		throw new Main\ArgumentException('Must be greater than zero', 'leadID');
	}

	$qty = count($bindings);
	if($qty === 0)
	{
		return;
	}

	$processed = 0;
	for($i = 0; $i < $qty; $i++)
	{
		$binding = $bindings[$i];
		if(!is_array($binding))
		{
			continue;
		}

		$contactID = isset($binding['CONTACT_ID']) ? (int)$binding['CONTACT_ID'] : 0;
		if($contactID <= 0)
		{
			continue;
		}

		self::upsert(
			array(
				'LEAD_ID' => $leadID,
				'CONTACT_ID' => $contactID,
				'SORT' => isset($binding['SORT']) ? (int)$binding['SORT'] : (10 * ($i + 1)),
				'ROLE_ID' => isset($binding['ROLE_ID']) ? (int)$binding['ROLE_ID'] : EntityBinding::ROLE_UNDEFINED,
				'IS_PRIMARY' => isset($binding['IS_PRIMARY']) ? $binding['IS_PRIMARY'] : ''
			)
		);
		$processed++;
	}

	if($processed > 0)
	{
		Main\Application::getConnection()->queryExecute(
		/** @lang text*/
			"UPDATE b_crm_lead SET CONTACT_ID =
			(SELECT MIN(CONTACT_ID) FROM b_crm_lead_contact WHERE IS_PRIMARY = 'Y' AND LEAD_ID = {$leadID})
			WHERE ID = {$leadID}"
		);
	}
}