• Модуль: calendar
  • Путь к файлу: ~/bitrix/modules/calendar/lib/controller/locationajax.php
  • Класс: BitrixCalendarControllerLocationAjax
  • Вызов: LocationAjax::deleteRoomAction
public function deleteRoomAction(): array
{
	if (Loader::includeModule('intranet') && !BitrixIntranetUtil::isIntranetUser())
	{
		return [];
	}

	$typeModel = TypeModel::createFromXmlId(Dictionary::CALENDAR_TYPE['location']);
	$accessController = new TypeAccessController(CCalendar::GetUserId());
	if (
		!$accessController->check(ActionDictionary::ACTION_TYPE_EDIT, $typeModel, [])
		|| !RoomsPermissionManager::isLocationFeatureEnabled()
	)
	{
		$this->addError(new BitrixMainError(Loc::getMessage('EC_ACCESS_DENIED')));
		return [];
	}

	$builder = new BitrixCalendarCoreBuildersRoomsRoomBuilderFromRequest($this->getRequest());
	$manager =
		RoomsManager::createInstanceWithRoom($builder->build())
			->deleteRoom()
			->pullDeleteEvents()
			->deleteEmptyEvents()
			->deleteLocationFromEvents()
			->cleanAccessTable()
			->clearCache()
			->eventHandler('OnAfterCalendarRoomDelete')
			->addPullEvent('delete_room')
	;


	if ($manager->getError())
	{
		$this->addError(
			$manager->getError()
		);
	}

	return $manager->prepareResponseData();
}