• Модуль: calendar
  • Путь к файлу: ~/bitrix/modules/calendar/lib/sync/office365/eventmanager.php
  • Класс: Bitrix\Calendar\Sync\Office365\EventManager
  • Вызов: EventManager::deleteInstance
public function deleteInstance(Event $event, EventContext $context): Result
{
	$result = new Result();
	$masterEventId = $context->getEventConnection()
		? $context->getEventConnection()->getVendorEventId()
		: ($context->sync['masterEventId'] ?? null)
	;
	if ($masterEventId)
	{
		$excludeDate = new Main\Type\DateTime(
			$context->sync['excludeDate']->getDate()->format('Ymd 000000'),
			'Ymd His',
			$event->getStartTimeZone()
				? $event->getStartTimeZone()->getTimeZone()
				: new \DateTimeZone('UTC')
		);
		try
		{
			if ($instance = $this->getInstanceForDay($masterEventId, $excludeDate))
			{
				$this->getService()->deleteEvent(
					$instance->id,
				);
			}
			else
			{
				$result->addError(new Main\Error("Instances for event not found", 404));
			}
		}
		catch (ApiException $e)
		{
			if ((int)$e->getCode() !== 400 && (int)$e->getCode() !== 404)
			{
				throw $e;
			}

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

	return $result;
}