<?php
// --- API pour sauvegarder un ticket d'abonnement ---
ob_start();
header('Content-Type: text/plain; charset=utf-8');
header("HTTP/1.0 200 OK");
register_shutdown_function(function() {
    $size = ob_get_length();
    header('Content-Length: ' . $size);
    ob_end_flush();
});

require_once 'config/database.php';

// Paramètres reçus du client Java ME
$code = isset($_POST['code']) ? trim($_POST['code']) : '';
$site_id = isset($_POST['site_id']) ? trim($_POST['site_id']) : '';
$numero_ticket = isset($_POST['numero_ticket']) ? trim($_POST['numero_ticket']) : '';
$date_heure = isset($_POST['date_heure']) ? trim($_POST['date_heure']) : '';
$prix = isset($_POST['prix']) ? trim($_POST['prix']) : '';
$designation = isset($_POST['designation']) ? trim($_POST['designation']) : '';
$designationAR = isset($_POST['designationAR']) ? trim($_POST['designationAR']) : '';
$matricule = isset($_POST['matricule']) ? trim($_POST['matricule']) : '';
$date_debut = isset($_POST['date_debut']) ? trim($_POST['date_debut']) : '';
$date_fin = isset($_POST['date_fin']) ? trim($_POST['date_fin']) : '';
$type = isset($_POST['type']) ? trim($_POST['type']) : '';

// Validation des paramètres obligatoires
if (empty($code) || empty($site_id) || empty($numero_ticket) || empty($prix) || empty($designation)) {
    echo "ERR|Paramètres manquants ou invalides";
    exit;
}

try {
    $pdo->beginTransaction();

    // Conversion de la date si nécessaire
    $date_mysql = date('Y-m-d H:i:s');
    if (preg_match('/(\d{2})\/(\d{2})\/(\d{4})/', $date_heure, $m)) {
        $date_mysql = $m[3] . "-" . $m[2] . "-" . $m[1] . " " . date('H:i:s');
    } elseif (preg_match('/(\d{4})-(\d{2})-(\d{2})/', $date_heure, $m)) {
        $date_mysql = $m[1] . "-" . $m[2] . "-" . $m[3] . " " . date('H:i:s');
    }

    // Insertion du ticket d'abonnement dans Tickets_Parking
    // La désignation inclut le type et le matricule
    $designation_complete = $designation . " - " . $type . " - " . $matricule;
    $designationAR_complete = $designationAR . " - " . $matricule;
    
    $stmt = $pdo->prepare("INSERT INTO Tickets_Parking 
        (numero_ticket, date_heure, prix, designation, code_utilisateur, designationAR, SiteID) 
        VALUES (?, ?, ?, ?, ?, ?, ?)");

    $stmt->execute([
        $numero_ticket,
        $date_mysql, 
        $prix, 
        $designation_complete, 
        $code, 
        $designationAR_complete, 
        $site_id
    ]);

    // Mise à jour last_ticket_number dans Utilisateurs
    $stmtUpdate = $pdo->prepare("UPDATE Utilisateurs SET last_ticket_number = ? WHERE code_utilisateur = ?");
    $stmtUpdate->execute([$numero_ticket, $code]);

    // Log de l'opération
    $stmtLog = $pdo->prepare("INSERT INTO SystemLogs 
        (date_heure, type, code_utilisateur, SiteID, description, statut) 
        VALUES (NOW(), 'ABONNEMENT', ?, ?, ?, 'SUCCES')");
    
    $description = "Abonnement: $designation ($type) - Matricule: $matricule - Du $date_debut au $date_fin - Prix: $prix DA";
    $stmtLog->execute([$code, $site_id, $description]);

    $pdo->commit();
    echo "OK|Abonnement enregistré avec succès";

} catch (Exception $e) {
    if ($pdo->inTransaction()) $pdo->rollBack();
    echo "ERR|" . $e->getMessage();
}
?>
