yogiboook_new/public/userarea/cancel_booking.php

52 lines
1.4 KiB
PHP

<?php
session_start();
include('include/headscript.php');
header('Content-Type: application/json');
if (!isset($_SESSION['iduserlogin'])) {
echo json_encode(['success' => 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'
]);