• Модуль: crm
  • Путь к файлу: ~/bitrix/modules/crm/lib/order/buyer/agent/updateuserexternalidagent.php
  • Класс: Bitrix\Crm\Order\Buyer\Agent\UpdateUserExternalIdAgent
  • Вызов: UpdateUserExternalIdAgent::run
private function run(): bool
{
	if (!Loader::includeModule('sale') || Loader::includeModule('bitrix24'))
	{
		return true;
	}

	$lastId = $this->getLastProcessUserId();
	$extranetUsersWithoutExternalIds = $this->getExtranetUsersWithoutExternalIds($lastId);
	if (empty($extranetUsersWithoutExternalIds))
	{
		return true;
	}
	$this->setLastProcessUserId(end($extranetUsersWithoutExternalIds));

	$usersWithOrdersIds = OrderTable::getList([
		'select' => [
			'USER_ID',
		],
		'filter' => [
			'=USER_ID' => $extranetUsersWithoutExternalIds,
		],
	]);
	$usersWithOrdersIds = array_column($usersWithOrdersIds->fetchAll(), 'USER_ID');
	if (empty($usersWithOrdersIds))
	{
		return false;
	}

	$usersWithOrdersIds = join(',', $usersWithOrdersIds);
	$sql = new SqlExpression(
		"UPDATE ?# SET `EXTERNAL_AUTH_ID` = ? WHERE ID IN ({$usersWithOrdersIds})",
		UserTable::getTableName(),
		Buyer::AUTH_ID
	);

	Application::getConnection()->queryExecute($sql);
	UserTable::getEntity()->cleanCache();

	return false;
}