status === BookingStatus::Confirmed) { $this->refundBookingAction->handle( $booking, (string) $booking->price, self::CANCELLATION_REFUND_REASON, $requestedBy, ); return $booking->refresh(); } if ($booking->status !== BookingStatus::PendingPayment) { throw BookingCannotBeCancelledException::notPendingPayment($booking); } $booking->update(['status' => BookingStatus::Cancelled]); return $booking; } }