• Модуль: calendar
  • Путь к файлу: ~/bitrix/modules/calendar/lib/sync/office365/eventmanager.php
  • Класс: Bitrix\Calendar\Sync\Office365\EventManager
  • Вызов: EventManager::create
public function create(Core\Event\Event $event, EventContext $context): Result
{
	$result = new Result();
	$internalDto = $this->getEventConverter()->eventToDto($event);

	try
	{
		$dto = $this->getService()->createEvent($internalDto, $context->getSectionConnection()->getVendorSectionId());
		if ($dto)
		{
			if ($event->getExcludedDateCollection() && $event->getExcludedDateCollection()->count())
			{
				$context->add('sync', 'masterEventId', $dto->id);
				/** @var Main\Type\DateTime $item */
				foreach ($event->getExcludedDateCollection() as $item)
				{
					$context->add('sync', 'excludeDate', $item);
					$this->deleteInstance($event, $context);
				}
			}

			if (!empty($dto->id))
			{
				$result->setData($this->prepareResultData($dto));
			}
			else
			{
				$result->addError(new Main\Error('Error of create a series master event'));
			}
		}
		else
		{
			$result->addError(new Main\Error('Error of create event'));
		}
	}
	catch (ApiException $exception)
	{
		if ((int)$exception->getCode() !== 400)
		{
			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;
}