false, 'message' => 'Non autorizzato']); exit; } $dbHandler = DBHandlerSelect::getInstance(); $pdo = $dbHandler->getConnection(); $booking_id = (int)($_POST['booking_id'] ?? 0); $user_id = (int)$_SESSION['iduserlogin']; if ($booking_id <= 0) { echo json_encode(['success' => false, 'message' => 'ID prenotazione non valido']); exit; } // Verifica che la prenotazione appartenga all'utente e sia cancellabile $stmt = $pdo->prepare(" SELECT sb.id FROM session_bookings sb JOIN class_sessions cs ON sb.session_id = cs.id WHERE sb.id = ? AND sb.user_id = ? AND sb.status = 'booked' AND cs.session_date > DATE_ADD(NOW(), INTERVAL 24 HOUR) "); $stmt->execute([$booking_id, $user_id]); if (!$stmt->fetch()) { echo json_encode(['success' => false, 'message' => 'Prenotazione non trovata, non tua, già annullata o non più cancellabile (entro 24 ore)']); exit; } // Aggiorna status a 'cancelled' $stmt = $pdo->prepare(" UPDATE session_bookings SET status = 'cancelled', updated_at = CURRENT_TIMESTAMP WHERE id = ? "); $success = $stmt->execute([$booking_id]); echo json_encode([ 'success' => $success, 'message' => $success ? 'Prenotazione annullata con successo' : 'Errore durante l\'aggiornamento' ]);