• Модуль: calendar
  • Путь к файлу: ~/bitrix/modules/calendar/lib/rooms/manager.php
  • Класс: BitrixCalendarRoomsManager
  • Вызов: Manager::cancelBooking
public function cancelBooking(array $params = []): Manager
{
	$params = [
		'recursion_mode' => $params['recursion_mode'] ?? null,
		'parent_event_id' => $params['parent_event_id'] ?? null,
		'section_id' => $params['section_id'] ?? null,
		'current_event_date_from' => $params['current_event_date_from'] ?? null,
		'current_event_date_to' => $params['current_event_date_to'] ?? null,
		'owner_id' => $params['owner_id'] ?? null,
	];

	if($this->getError() !== null)
	{
		return $this;
	}

	if($params['recursion_mode'] === 'all' || $params['recursion_mode'] === 'next')
	{
		$event = CCalendarEvent::GetById($params['parent_event_id']);

		$params['frequency'] = $event['RRULE']['FREQ'] ?? null;
		if($params['recursion_mode'] === 'all')
		{
			$params['current_event_date_from'] = $event['DATE_FROM'] ?? null;
			$params['current_event_date_to'] = $event['DATE_TO'] ?? null;
		}
	}

	$result = CCalendar::SaveEventEx([
		'recursionEditMode' => $params['recursion_mode'],
		'currentEventDateFrom' => $params['current_event_date_from'],
		'checkPermission' => false,
		'sendInvitations' => false,
		'userId' => $params['owner_id'],
		'arFields' => [
			'ID' => $params['parent_event_id'],
			'DATE_FROM' => $params['current_event_date_from'],
			'DATE_TO' => $params['current_event_date_to'],
			'LOCATION' => '',
		],
	]);

	$params['event_id'] = $result['recEventId'] ?? $result['id'] ?? null;

	$this->sendCancelBookingNotification($params);
	return $this;
}