• Модуль: calendar
  • Путь к файлу: ~/bitrix/modules/calendar/lib/sharing/sharingeventmanager.php
  • Класс: BitrixCalendarSharingSharingEventManager
  • Вызов: SharingEventManager::onSharingCrmEventDeclined
static function onSharingCrmEventDeclined(int $eventId): void
{
	if (!Loader::includeModule('crm'))
	{
		return;
	}

	(new SharingCrmActivityManager($eventId))
		->completeSharedCrmActivity(SharingCrmActivityManager::STATUS_CANCELED_BY_MANAGER)
	;

	$sharingFactory = new SharingLinkFactory();

	/** @var SharingLinkEventLink $eventLink */
	$eventLink = $sharingFactory->getEventLinkByEventId($eventId);

	/** @var SharingLinkCrmDealLink $crmDealLink */
	$crmDealLink = $sharingFactory->getLinkByHash($eventLink->getParentLinkHash());

	/** @var Event $event */
	$event = (new MappersEvent())->getById($eventId);

	if ($crmDealLink->getContactId() > 0)
	{
		CrmIntegrationCalendarNotificationManager::getSenderInstance($crmDealLink)
			->setCrmDealLink($crmDealLink)
			->setEventLink($eventLink)
			->setEvent($event)
			->sendCrmSharingCancelled()
		;
	}
	else
	{
		$email = CUser::GetByID($eventLink->getHostId())->Fetch()['PERSONAL_MAILBOX'] ?? null;
		if (!is_string($email))
		{
			return;
		}

		$eventLink->setCanceledTimestamp(time());
		(new SharingNotificationMail())
			->setEventLink($eventLink)
			->setEvent($event)
			->notifyAboutMeetingCancelled($email)
		;
	}
}