• Модуль: calendar
  • Путь к файлу: ~/bitrix/modules/calendar/lib/sync/managers/vendorsynchronization.php
  • Класс: BitrixCalendarSyncManagersVendorSynchronization
  • Вызов: VendorSynchronization::deleteInstance
public function deleteInstance(Event $event, EventContext $context): Result
{
	$mainResult = new Result();
	$result = new Result();
	$resultData = [];
	$factory = $this->factory;
	$excludeDate = $context->sync['excludeDate'] ?? null;

	if (!$excludeDate)
	{
		$mainResult->addError(new Error('Not found info about exclude date'));
		return $mainResult;
	}
	$sectionLink = $context->getSectionConnection();
	$masterLink = $context->getEventConnection();

	if ($masterLink && $sectionLink)
	{
		$manager = $factory->getEventManager();
		$result = $manager->deleteInstance($event, $context);
		if ($result->isSuccess())
		{
			$status = Dictionary::SYNC_STATUS['success'];
			$masterLink
				->setEntityTag($result->getData()['event']['etag'] ?? null)
				->setLastSyncStatus($status)
				->setVersion($masterLink->getEvent()->getVersion())
			;
		}
		else
		{
			$status = Dictionary::SYNC_STATUS['failed'];
			$masterLink->setLastSyncStatus(Dictionary::SYNC_STATUS['update']);
		}

		$this->mapperFactory->getEventConnection()->update($masterLink);
	}
	else
	{
		$status = Dictionary::SYNC_STATUS['failed'];
		$result->addError(new Error('Link not found'));
	}

	$resultData[$factory->getConnection()->getVendor()->getCode()] = [
		'result' => $result,
		'status' => $status,
	];

	return $result->setData($resultData);
}