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