• Модуль: calendar
  • Путь к файлу: ~/bitrix/modules/calendar/lib/sync/office365/outgoingeventmanager.php
  • Класс: BitrixCalendarSyncOffice365OutgoingEventManager
  • Вызов: OutgoingEventManager::saveSingle
private function saveSingle(SyncEvent $syncEvent, SyncSectionMap $syncSectionMap)
{
	if ($syncEvent->getEventConnection() && $syncEvent->getEventConnection()->getVendorEventId())
	{
		$context = (new SyncUtilEventContext())
			->setEventConnection($syncEvent->getEventConnection())
		;
		try
		{
			$result = $this->eventManager->update(
				$syncEvent->getEvent(),
				$context
			);
			if ($result->isSuccess())
			{
				$data = $result->getData();
				$syncEvent
					->setAction(SyncDictionary::SYNC_STATUS['success'])
					->getEventConnection()
						->setEntityTag($data['event']['etag'])
						->setVendorVersionId($data['event']['version'])
						->setLastSyncStatus(SyncDictionary::SYNC_STATUS['success'])
				;
			}
		}
		catch(SyncExceptionsNotFoundException $e)
		{
			$syncEvent
				->setAction(SyncDictionary::SYNC_STATUS['success'])
				->getEventConnection()
				->setLastSyncStatus(SyncDictionary::SYNC_STATUS['deleted'])
			;
		}
	}
	else
	{
		$syncSection = $this->getSyncSection(
			$syncSectionMap,
			$syncEvent->getEvent()->getSection()->getId()
		);
		if ($syncSection && $syncSection->getSectionConnection()->isActive())
		{
			$context = (new SyncUtilEventContext())
				->setSectionConnection($syncSection->getSectionConnection())
			;
			try
			{
				$result = $this->eventManager->create(
					$syncEvent->getEvent(),
					$context
				);
				if ($result->isSuccess())
				{
					$data = $result->getData();
					$eventConnection = (new SyncConnectionEventConnection())
						->setEvent($syncEvent->getEvent())
						->setConnection($syncSection->getSectionConnection()->getConnection())
						->setVendorEventId($data['event']['id'])
						->setVendorVersionId($data['event']['version'])
						->setEntityTag($data['event']['etag'])
						->setVersion($syncEvent->getEvent()->getVersion())
						->setLastSyncStatus(SyncDictionary::SYNC_STATUS['success'])
					;
					$syncEvent
						->setAction(SyncDictionary::SYNC_STATUS['success'])
						->setEventConnection($eventConnection);
				}
			}
			catch(SyncExceptionsNotFoundException $e)
			{
				$syncSection->getSectionConnection()->setActive(false);
				$syncEvent->setAction(SyncDictionary::SYNC_STATUS['success']);
			}
		}
	}
}