<?php
session_start();
require_once __DIR__ . "/../../config/db.php";

try {
    if ($_SERVER['REQUEST_METHOD'] !== 'POST') throw new Exception("Méthode non autorisée");

    $produit_id = (int)($_POST['produit_id'] ?? 0);
    $quantite_produite = (float)($_POST['quantite'] ?? 0);
    if ($produit_id <= 0 || $quantite_produite <= 0) throw new Exception("Données invalides");

    // Récupérer la fiche technique
    $fiche = $conn->prepare("
        SELECT id
        FROM fiches_techniques
        WHERE produit_id = ?
    ");
    $fiche->execute([$produit_id]);
    $fiche_id = $fiche->fetchColumn();
    if (!$fiche_id) throw new Exception("Fiche technique introuvable");

    // Récupérer les lignes (matières premières)
    $stmt = $conn->prepare("
        SELECT a.id AS article_id, a.nom, a.cout_achat, u.nom AS unite,sa.quantite AS stock_actuel, fl.quantite AS quantite_unitaire
        FROM fiche_lignes fl
        JOIN articles a ON a.id = fl.article_id
        LEFT JOIN stock_articles sa ON sa.article_id = a.id
        JOIN unites u ON a.unite_id = u.id
        WHERE fl.fiche_id = ?
    ");
    $stmt->execute([$fiche_id]);
    $matieres = $stmt->fetchAll(PDO::FETCH_ASSOC);

    $cout_total = 0;
    $possible = true;
    $html = '';

    foreach ($matieres as $m) {
        $quantite_requise = $m['quantite_unitaire'] * $quantite_produite;
        $quantite_manquante = max(0, $quantite_requise - $m['stock_actuel']);
        if ($quantite_manquante > 0) $possible = false;

        $cout_estime = $quantite_requise * $m['cout_achat'];
        $cout_total += $cout_estime;

        $html .= "<tr>
            <td>{$m['nom']}</td>
            <td>" . htmlspecialchars($m['unite']) . "</td>
            <td class='text-end'>{$m['stock_actuel']}</td>
            <td class='text-end'>{$quantite_requise}</td>
            <td class='text-end text-danger'>{$quantite_manquante}</td>
            <td class='text-end'>{$cout_estime}</td>
            <td class='text-center'>" . ($quantite_manquante == 0 ? '<span class="badge bg-success">OK</span>' : '<span class="badge bg-danger">Insuffisant</span>') . "</td>
        </tr>";
    }

    // Ajouter un tr caché pour transmettre les coûts et le possible
    $cout_unitaire = $quantite_produite > 0 ? $cout_total / $quantite_produite : 0;
    $html .= "<tr id='coutsSimulation' style='display:none'
                  data-cout-total='{$cout_total}'
                  data-cout-unitaire='{$cout_unitaire}'
                  data-possible='" . ($possible ? "1" : "0") . "'></tr>";

    echo $html;

} catch (Exception $e) {
    echo "<tr><td colspan='7' class='text-danger'>Erreur : " . htmlspecialchars($e->getMessage()) . "</td></tr>";
}
