• Модуль: calendar
  • Путь к файлу: ~/bitrix/modules/calendar/lib/sync/office365/eventmanager.php
  • Класс: Bitrix\Calendar\Sync\Office365\EventManager
  • Вызов: EventManager::createInstance
public function createInstance(Core\Event\Event $event, EventContext $context): Result
{
	if (
		$event->getOriginalDateFrom()
		&& $event->getOriginalDateFrom()->format('Ymd') !== $event->getStart()->format('Ymd')
	)
	{
		return $this->moveInstance($event, $context);
	}

	$result = new Result();
	$masterLink = $context->getEventConnection();

	try
	{
		if ($masterLink && $instance = $this->getInstanceForDay($masterLink->getVendorEventId(), $event->getStart()->getDate()))
		{
			$dto = $this->getService()->updateEvent(
				$instance->id,
				$this->getEventConverter()->eventToDto($event),
			);
			if ($dto && !empty($dto->id))
			{
				$result->setData($this->prepareResultData($dto));
			}
			else
			{
				$result->addError(new Main\Error("Error of create instance.", 404));
			}
		}
		else
		{
			$result->addError(new Main\Error("Instances for event not found", 404));
		}
	}
	catch (ApiException $exception)
	{
		if ((int)$exception->getCode() !== 400 && (int)$exception->getCode() !== 404)
		{
			throw $exception;
		}

		$result->addError(new Main\Error($exception->getMessage(), $exception->getCode()));
	}
	catch (AuthException $exception)
	{
		$result->addError(new Main\Error($exception->getMessage(), $exception->getCode()));
	}

	return $result;
}