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