- Модуль: calendar
- Путь к файлу: ~/bitrix/modules/calendar/lib/sync/managers/outgoingmanager.php
- Класс: BitrixCalendarSyncManagersOutgoingManager
- Вызов: OutgoingManager::exportSimpleEvent
private function exportSimpleEvent(SectionConnection $sectionLink, EO_Event $eventData): Result
{
$result = new Result();
$context = new Context([]);
$context->add('sync', 'sectionLink', $sectionLink);
$event = $this->mapperFactory->getEvent()->getByEntityObject($eventData);
$eventLink = $this->getEventLink($eventData);
$eventContext = (new EventContext())
->merge($context)
->setSectionConnection($sectionLink)
->setEventConnection($eventLink)
;
if ($eventLink && !$eventLink->getVendorEventId())
{
$this->mapperFactory->getEventConnection()->delete($eventLink);
$eventLink = null;
}
if ($event && $eventLink)
{
$resultUpdate = $this->syncManager->updateEvent($event, $eventContext);
$resultData = [
'entityType' => 'link',
'entity' => $eventLink,
'action' => 'updated',
];
if (!$resultUpdate->isSuccess())
{
$result->addErrors($resultUpdate->getErrors());
}
}
else
{
$resultAdd = $this->syncManager->createEvent($event, $eventContext);
$resultData = [
'entityType' => 'link',
'action' => 'exported',
];
if ($resultAdd->isSuccess())
{
if (!empty($resultAdd->getData()['eventConnectionId']))
{
$resultData['entity'] = $this->mapperFactory->getEventConnection()
->getById($resultAdd->getData()['eventConnectionId'])
;
}
else
{
$resultData['entity'] = $this->mapperFactory->getEventConnection()->getMap([
'=EVENT_ID' => $event->getId(),
'=CONNECTION_ID' => $sectionLink->getConnection()->getId(),
])->fetch();
}
}
else
{
$resultData = [
'entityType' => 'errorLink',
'action' => 'exported',
];
$result->addErrors($resultAdd->getErrors());
}
}
return $result->setData($resultData);
}