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