• Модуль: calendar
  • Путь к файлу: ~/bitrix/modules/calendar/lib/sync/managers/vendorsynchronization.php
  • Класс: BitrixCalendarSyncManagersVendorSynchronization
  • Вызов: VendorSynchronization::createRecurrence
public function createRecurrence(SyncEvent $recurrenceEvent, EventContext $context): Result
{
	$mainResult = new Result();
	$resultData = [];
	$factory = $this->factory;
	$manager = $factory->getEventManager();
	/** @var SectionConnection $sectionLink */
	$sectionLink = $context->getSectionConnection();
	if (!$sectionLink)
	{
		$mainResult->addError(new Error('Section connection not found'));

		return $mainResult;
	}
	$context->add('sync', 'vendorSectionId', $sectionLink->getVendorSectionId());

	$recurrenceEvent->getEvent()->setUid(null);

	$result = $manager->createRecurrence($recurrenceEvent, $sectionLink, $context);

	if ($result->isSuccess())
	{
		$masterResult = $this->createEventLink($recurrenceEvent, $this->factory->getConnection()->getId());

		/** @var SyncEvent $instance */
		foreach ($recurrenceEvent->getInstanceMap()->getCollection() as $instance)
		{
			$instanceResult[] = $this->createEventLink($instance, $this->factory->getConnection()->getId());
		}

		$status = Dictionary::SYNC_STATUS['success'];
	}

	else
	{
		$status = Dictionary::SYNC_STATUS['failed'];
	}

	$resultData[$factory->getConnection()->getVendor()->getCode()] = [
		'result' => $result,
		'status' => $status,
		'linkMasterResult' => $masterResult ?? null,
		'linkInstancesResult' => $instanceResult ?? null,
	];

	return $mainResult->setData($resultData);
}