<?php
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';

// Le TPE envoie maintenant un paramètre "data" avec le contenu de Tickets.txt
$content = isset($_REQUEST['data']) ? trim($_REQUEST['data']) : '';

if (empty($content)) {
    die("OK|Rien a synchroniser"); // On renvoie OK car si vide, pas d'erreur, juste rien à faire
}

try {
    $pdo->beginTransaction();

    // Structure de la table Tickets_Parking:
    // 1. numero_ticket, 2. date_heure, 3. prix, 4. designation, 5. designationAR, 6. code_utilisateur, 7. SiteID
    $stmt = $pdo->prepare("INSERT INTO Tickets_Parking (numero_ticket, date_heure, prix, designation, code_utilisateur, designationAR, SiteID) 
                          VALUES (?, ?, ?, ?, ?, ?, ?)
                          ON DUPLICATE KEY UPDATE date_heure=VALUES(date_heure), prix=VALUES(prix), designation=VALUES(designation), code_utilisateur=VALUES(code_utilisateur), designationAR=VALUES(designationAR), SiteID=VALUES(SiteID)");

    $lines = explode("\n", $content);
    $last_ticket_number = 0;
    $site_id = '';
    $code_utilisateur = '';
    $total_montant = 0;
    $count = 0;

    foreach ($lines as $line) {
        $line = trim($line);
        if (empty($line)) continue;
        
        $p = explode("|", $line);
        if (count($p) >= 7) {
            $num = $p[0];
            $date_brute = $p[1]; // Format: DD/MM/YYYY HH:II
            $prix = $p[2];
            $desig = $p[3];
            $user = $p[4];
            $desigAR = $p[5];
            $site = $p[6];
            
            // Conversion de la date DD/MM/YYYY HH:II vers YYYY-MM-DD HH:II:SS pour MySQL
            $date_mysql = "";
            if (preg_match('/(\d{2})\/(\d{2})\/(\d{4}) (\d{2}):(\d{2})/', $date_brute, $m)) {
                $date_mysql = $m[3] . "-" . $m[2] . "-" . $m[1] . " " . $m[4] . ":" . $m[5] . ":00";
            } else {
                $date_mysql = date('Y-m-d H:i:s'); // Fallback date actuelle
            }
            
            $stmt->execute([$num, $date_mysql, $prix, $desig, $user, $desigAR, $site]);
            
            $total_montant += (float)$prix;
            $count++;
            // S'assurer que le numéro de ticket garde ses 10 chiffres (avec zéros au début)
            $last_ticket_number = str_pad($num, 10, "0", STR_PAD_LEFT);
            $site_id = $site;
            $code_utilisateur = $user;
        }
    }

    if ($count > 0) {
        // 1. Enregistrement dans DailyReports
        $stmtReport = $pdo->prepare("INSERT INTO DailyReports (date_rapport, SiteID, code_utilisateur, nombre_tickets, montant_total, statut, date_synchronisation) 
                                    VALUES (CURDATE(), ?, ?, ?, ?, 'EN_ATTENTE', NOW())");
        $stmtReport->execute([$site_id, $code_utilisateur, $count, $total_montant]);

        // 2. Mise à jour Utilisateurs : is_session_open=N, session_id=Null, last_ticket_number
        $stmtUpdateUser = $pdo->prepare("UPDATE Utilisateurs SET last_ticket_number = ?, is_session_open = 'N', session_id = NULL WHERE code_utilisateur = ?");
        $stmtUpdateUser->execute([$last_ticket_number, $code_utilisateur]);

        // 3. Log de synchronisation
        $stmtLog = $pdo->prepare("INSERT INTO SystemLogs (date_heure, type, code_utilisateur, SiteID, description, statut) VALUES (NOW(), 'SYNC', ?, ?, ?, 'SUCCES')");
        $stmtLog->execute([$code_utilisateur, $site_id, "Rapport généré: $count tickets, Total: $total_montant DA"]);
    }

    $pdo->commit();
    echo "OK|Synchronisation réussie";

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