<?php
/**
 * save_annonce_ia.php
 * Automatisation IA – Cron Job – Mondialisa
 */

// ================================
// 1. SÉCURITÉ : CLI / CRON ONLY
// ================================
$TEST_KEY = 'TESTER123456'; // change cette clé

$isCli = (php_sapi_name() === 'cli');
$isTestHttp = isset($_GET['test']) && $_GET['test'] === $TEST_KEY;

if (!$isCli && !$isTestHttp) {
    http_response_code(403);
    exit('Forbidden');
}

// ================================
// 2. CONFIG & DB
// ================================
require_once __DIR__ . '/../../config.inc.php';

$logFile  = __DIR__ . '/save_annonce_ia.log';
$lockFile = __DIR__ . '/save_annonce_ia.lock';

function logIA($msg) {
    global $logFile;
    file_put_contents(
        $logFile,
        '[' . date('Y-m-d H:i:s') . '] ' . $msg . PHP_EOL,
        FILE_APPEND
    );
}

// ================================
// 3. LOCK ANTI DOUBLE EXECUTION
// ================================
if (file_exists($lockFile)) {
    logIA('Script déjà en cours – arrêt');
    exit;
}
file_put_contents($lockFile, getmypid());
register_shutdown_function(fn() => @unlink($lockFile));

logIA('=== CRON START ===');

// ================================
// 4. SOURCE À SCRAPER (EXEMPLE)
// ================================
$sourceUrl = 'https://example.com/annonces';
$html = @file_get_contents($sourceUrl);

if (!$html) {
    logIA("Erreur récupération source : $sourceUrl");
    exit;
}

// ================================
// 5. PARSING HTML
// ================================
libxml_use_internal_errors(true);
$dom = new DOMDocument();
$dom->loadHTML($html);
$xpath = new DOMXPath($dom);

// ⚠️ À ADAPTER selon le site
$items = $xpath->query("//div[@class='annonce']");

$inserted = 0;

// ================================
// 6. BOUCLE ANNONCES
// ================================
foreach ($items as $item) {

    $titreNode = $xpath->query(".//h2", $item)->item(0);
    $descNode  = $xpath->query(".//p",  $item)->item(0);

    if (!$titreNode || !$descNode) continue;

    $titre = trim(strip_tags($titreNode->textContent));
    $description = trim(strip_tags($descNode->textContent));

    if (strlen($description) < 80) {
        logIA("Annonce ignorée (description trop courte)");
        continue;
    }

    // ================================
    // 7. DONNÉES PAR DÉFAUT IA
    // ================================
    $ref        = 'IA-' . strtoupper(bin2hex(random_bytes(5)));
    $note       = 0;
    $categorie  = 'Divers';
    $ville      = 'Casablanca';
    $pays       = 'MA';
    $nom        = 'Annonce IA';
    $tel        = null;
    $email      = null;
    $type       = 'offre';
    $photos_db  = null;
    $prix       = null;
    $statut     = 1;

    // ================================
    // 8. USER IA (UNIQUE)
    // ================================
    $user_ref = 'IA_SYSTEM';

    $checkUser = $dbh->prepare("SELECT id FROM mondialisa_users WHERE ref = ?");
    $checkUser->execute([$user_ref]);

    if (!$checkUser->fetch()) {

        $pass = password_hash(bin2hex(random_bytes(6)), PASSWORD_DEFAULT);

        $stmtUser = $dbh->prepare("
            INSERT INTO mondialisa_users
            (ref, city, country, lastname, tel, email, pass, role, statut, solde)
            VALUES
            (:ref, :city, :country, :lastname, NULL, NULL, :pass, 'ia', 1, 0)
        ");

        $stmtUser->execute([
            ':ref'      => $user_ref,
            ':city'     => $ville,
            ':country'  => $pays,
            ':lastname' => 'IA SYSTEM',
            ':pass'     => $pass
        ]);

        logIA("Utilisateur IA créé");
    }

    // ================================
    // 9. DÉTECTION DOUBLON
    // ================================
    $checkAnnonce = $dbh->prepare("
        SELECT id FROM mondialisa_annonces
        WHERE titre = ? AND description = ?
    ");
    $checkAnnonce->execute([$titre, $description]);

    if ($checkAnnonce->fetch()) {
        logIA("Doublon ignoré : $titre");
        continue;
    }

    // ================================
    // 10. INSERTION ANNONCE (TON SQL)
    // ================================
    $sql = "INSERT INTO mondialisa_annonces 
        (ref, user_ref, titre, description, note, categorie, ville, pays,
         nom, tel, email, type, photo, prix, statut)
        VALUES
        (:ref, :user_ref, :titre, :description, :note, :categorie, :ville, :pays,
         :nom, :tel, :email, :type, :photo, :prix, :statut)";

    $stmt = $dbh->prepare($sql);
    $stmt->execute([
        ':ref'        => $ref,
        ':user_ref'   => $user_ref,
        ':titre'      => $titre,
        ':description'=> $description,
        ':note'       => $note,
        ':categorie'  => $categorie,
        ':ville'      => $ville,
        ':pays'       => $pays,
        ':nom'        => $nom,
        ':tel'        => $tel,
        ':email'      => $email,
        ':type'       => $type,
        ':photo'      => $photos_db,
        ':prix'       => $prix,
        ':statut'     => (int)$statut
    ]);

    $inserted++;
}

// ================================
// 11. FIN
// ================================
logIA("Annonces insérées : $inserted");
logIA("=== CRON END ===");
