• Модуль: calendar
  • Путь к файлу: ~/bitrix/modules/calendar/lib/sync/google/startsynchronizationmanager.php
  • Класс: BitrixCalendarSyncGoogleStartSynchronizationManager
  • Вызов: StartSynchronizationManager::createConnection
public function createConnection(MappersConnection $mapper): Connection
{
	$connection = (new BuildersBuilderConnectionFromExternalData($this->user))->build();
	$factory = new Factory($connection);
	/** @var Result $nameResult */
	$nameResult = $factory->getImportManager()->requestConnectionId();

	if (!$nameResult->isSuccess() || empty($nameResult->getData()['id']))
	{
		throw new BaseException('Can not connect with google');
	}

	$name = $nameResult->getData()['id'];
	$connectionMap = $mapper->getMap([
		'%=NAME' => '%'. $name .'%',
		'=ENTITY_ID' => $this->user->getId(),
		'=ACCOUNT_TYPE' => Factory::SERVICE_NAME,
	], null, ['ID' => 'ASC']);

	$currentConnection = $connectionMap->fetch();

	if ($currentConnection && $duplicatedConnection = $connectionMap->fetch())
	{
		$this->deleteConnectionData($duplicatedConnection->getId());
	}

	$connection->setName($name);

	if ($currentConnection)
	{
		$currentConnection
			->setDeleted(false)
			->setName($name)
		;
		$mapper->update($currentConnection);

		return $currentConnection;
	}

	return $mapper->create($connection);
}