<?php
header('Content-Type: application/json');
header('Access-Control-Allow-Origin: *');
header('Access-Control-Allow-Methods: POST, OPTIONS');
header('Access-Control-Allow-Headers: Content-Type');

if ($_SERVER['REQUEST_METHOD'] === 'OPTIONS') {
    exit(0);
}

require_once 'config.php';

try {
    // Récupérer les données JSON
    $input = json_decode(file_get_contents('php://input'), true);

    if (!$input || !isset($input['tickets']) || !is_array($input['tickets'])) {
        echo json_encode([
            'success' => false,
            'message' => 'Données de tickets manquantes ou format invalide'
        ]);
        exit;
    }

    $tickets = $input['tickets'];
    $pdo->beginTransaction();

    $savedCount = 0;
    $errors = [];

    foreach ($tickets as $ticket) {
        if (!isset($ticket['numero_ticket']) || !isset($ticket['date_heure']) ||
            !isset($ticket['prix']) || !isset($ticket['code_utilisateur']) || !isset($ticket['SiteID'])) {
            $errors[] = 'Paramètres manquants pour un ticket';
            continue;
        }

        try {
            // Insérer le ticket dans la base de données
            $stmt = $pdo->prepare("
                INSERT INTO Tickets_Parking (numero_ticket, date_heure, prix, code_utilisateur, SiteID)
                VALUES (?, ?, ?, ?, ?)
            ");
            $stmt->execute([
                $ticket['numero_ticket'],
                $ticket['date_heure'],
                $ticket['prix'],
                $ticket['code_utilisateur'],
                $ticket['SiteID']
            ]);
            $savedCount++;
        } catch (Exception $e) {
            $errors[] = "Erreur pour ticket " . $ticket['numero_ticket'] . ": " . $e->getMessage();
        }
    }

    if (empty($errors)) {
        $pdo->commit();
        echo json_encode([
            'success' => true,
            'message' => "$savedCount tickets synchronisés avec succès"
        ]);
    } else {
        $pdo->rollBack();
        echo json_encode([
            'success' => false,
            'message' => 'Erreur lors de la synchronisation: ' . implode(', ', $errors)
        ]);
    }

} catch (Exception $e) {
    if ($pdo->inTransaction()) {
        $pdo->rollBack();
    }
    error_log("Erreur sync_tickets: " . $e->getMessage());
    echo json_encode([
        'success' => false,
        'message' => 'Erreur serveur: ' . $e->getMessage()
    ]);
}
?>
