<?php
// Fichier: new_order.php
require 'includes/db.php';
require 'includes/auth.php';
require_login();

// ... après le require_login()

// VÉRIFICATION CAMPAGNE OUVERTE
$today = date('Y-m-d');
$checkCamp = $pdo->prepare("SELECT count(*) FROM campagnes WHERE entreprise_id = ? AND statut = 'OUVERTE' AND date_fin >= ?");
$checkCamp->execute([$_SESSION['entreprise_id'], $today]);
if ($checkCamp->fetchColumn() == 0) {
    die("
        <div class='container mt-5'>
            <div class='alert alert-warning text-center p-5'>
                <h3>⛔ Aucune campagne en cours</h3>
                <p>Vous ne pouvez pas passer de commande pour le moment.</p>
                <p>Veuillez contacter votre interlocuteur Naïta pour ouvrir une nouvelle période de vente.</p>
                <a href='dashboard.php' class='btn btn-dark mt-3'>Retour</a>
            </div>
        </div>
    ");
}

$id_cse = $_SESSION['entreprise_id'];
$msg = "";

// Récupérer Infos Cagnotte
$stmtCse = $pdo->prepare("SELECT solde_cagnotte FROM entreprises WHERE id = ?");
$stmtCse->execute([$id_cse]);
$solde_cagnotte = $stmtCse->fetchColumn() ?: 0.00;

// --- TRAITEMENT COMMANDE ---
if ($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_POST['action']) && $_POST['action'] == 'save_order') {
    try {
        $pdo->beginTransaction(); // Transaction pour sécuriser l'argent

        $beneficiaire_id = $_POST['beneficiaire_id'];
        // Vérif sécurité : le bénéficiaire appartient bien au CSE
        $check = $pdo->prepare("SELECT count(*) FROM beneficiaires WHERE id=? AND entreprise_id=?");
        $check->execute([$beneficiaire_id, $id_cse]);
        if($check->fetchColumn() == 0) throw new Exception("Erreur bénéficiaire.");

        // Récup campagne
        $stmtC = $pdo->query("SELECT id FROM campagnes ORDER BY id DESC LIMIT 1");
        $campagne_id = $stmtC->fetchColumn();

        // Calcul Panier
        $total_ttc = 0;
        $lignes_a_inserer = [];
        
        if (isset($_POST['produits']) && is_array($_POST['produits'])) {
            foreach ($_POST['produits'] as $index => $prod_id) {
                if(empty($prod_id)) continue;
                $qty = $_POST['quantites'][$index];
                
                $pInfo = $pdo->prepare("SELECT nom, prix_unitaire FROM produits WHERE id = ?");
                $pInfo->execute([$prod_id]);
                $prodData = $pInfo->fetch();
                if ($prodData) {
                    $prix = $prodData['prix_unitaire'];
                    $total_ttc += ($prix * $qty);
                    $lignes_a_inserer[] = [$prod_id, $qty, $prix, $prodData['nom']];
                }
            }
        }

        // GESTION CAGNOTTE
        $utilise_cagnotte = 0.00;
        if (isset($_POST['use_cagnotte']) && $_POST['use_cagnotte'] == '1') {
            // On ne peut pas utiliser plus que le total de la commande, ni plus que le solde dispo
            $max_utilisable = min($total_ttc, $solde_cagnotte);
            $utilise_cagnotte = $max_utilisable;
            
            // Débiter la cagnotte
            $pdo->prepare("UPDATE entreprises SET solde_cagnotte = solde_cagnotte - ? WHERE id = ?")
                ->execute([$utilise_cagnotte, $id_cse]);
        }

        // Enregistrement Commande
        $ref = "CMD-" . date('Ymd') . "-" . strtoupper(substr(uniqid(), -4));
        $sql = "INSERT INTO commandes (reference, campagne_id, beneficiaire_id, createur_id, date_creation, total_ttc, montant_cagnotte_utilise) VALUES (?, ?, ?, ?, ?, ?, ?)";
        $pdo->prepare($sql)->execute([$ref, $campagne_id, $beneficiaire_id, $_SESSION['user_id'], date('Y-m-d H:i:s'), $total_ttc, $utilise_cagnotte]);
        $commande_id = $pdo->lastInsertId();

        // Enregistrement Lignes
        $stmtLigne = $pdo->prepare("INSERT INTO lignes_commande (commande_id, produit_id, quantite, prix_unitaire_facture, nom_produit_historique) VALUES (?, ?, ?, ?, ?)");
        foreach($lignes_a_inserer as $ligne) {
            $stmtLigne->execute(array_merge([$commande_id], $ligne));
        }

        $pdo->commit();
        
        // Message final
        $reste_a_payer = $total_ttc - $utilise_cagnotte;
        $msg = "<div class='alert alert-success'>
                    ✅ Commande <strong>$ref</strong> validée !<br>
                    Total Articles : " . number_format($total_ttc, 2) . " €<br>
                    Cagnotte utilisée : -" . number_format($utilise_cagnotte, 2) . " €<br>
                    <strong>Reste à payer (Facture) : " . number_format($reste_a_payer, 2) . " €</strong>
                </div>";
        
        // Mise à jour visuelle du solde pour la suite
        $solde_cagnotte -= $utilise_cagnotte;

    } catch (Exception $e) {
        $pdo->rollBack();
        $msg = "<div class='alert alert-danger'>Erreur : " . $e->getMessage() . "</div>";
    }
}

// Données (FILTRÉES PAR CSE)
$beneficiaires = $pdo->prepare("SELECT * FROM beneficiaires WHERE entreprise_id = ? ORDER BY nom ASC");
$beneficiaires->execute([$id_cse]);
$liste_ben = $beneficiaires->fetchAll();

$produits = $pdo->query("SELECT * FROM produits WHERE actif = 1 ORDER BY reference ASC")->fetchAll();
?>

<!DOCTYPE html>
<html lang="fr">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Commande - Naïta</title>
    <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/css/bootstrap.min.css" rel="stylesheet">
    <link href="https://fonts.googleapis.com/icon?family=Material+Icons" rel="stylesheet">
    <link href="https://cdn.jsdelivr.net/npm/select2@4.1.0-rc.0/dist/css/select2.min.css" rel="stylesheet" />
    <link rel="stylesheet" href="assets/style.css">
</head>
<body>
    <nav class="navbar navbar-dark bg-dark mb-4">
        <div class="container-fluid px-4">
            <span class="navbar-brand">Nouvelle Commande</span>
            <a href="dashboard.php" class="btn btn-outline-light btn-sm">Retour</a>
        </div>
    </nav>
    <div class="container">
        <?= $msg ?>
        <form method="POST" id="orderForm">
            <input type="hidden" name="action" value="save_order">
            
            <div class="card mb-3 shadow-sm">
                <div class="card-body">
                    <label class="fw-bold">1. Bénéficiaire (De votre CSE uniquement)</label>
                    <div class="input-group mt-2">
                        <select name="beneficiaire_id" class="form-select select2-basic" required>
                            <option value="">-- Choisir --</option>
                            <?php foreach ($liste_ben as $b): ?>
                                <option value="<?= $b['id'] ?>"><?= htmlspecialchars($b['nom'] . ' ' . $b['prenom']) ?></option>
                            <?php endforeach; ?>
                        </select>
                        <a href="my_employees.php" class="btn btn-outline-secondary">Gérer ma liste</a>
                    </div>
                </div>
            </div>

            <div class="card mb-3 shadow-sm">
                <div class="card-header bg-white fw-bold d-flex justify-content-between">
                    <span>2. Panier</span>
                    <span class="fs-5">Total : <span id="grandTotal" class="fw-bold text-primary">0.00</span> €</span>
                </div>
                <div class="card-body p-0">
                    <table class="table mb-0"><tbody id="cartItems"></tbody></table>
                    <div class="p-3">
                        <button type="button" class="btn btn-sm btn-outline-dark" onclick="addProductRow()">+ Ajouter produit</button>
                    </div>
                </div>
            </div>

            <div class="card mb-4 bg-light border-gold">
                <div class="card-body">
                    <div class="d-flex justify-content-between align-items-center mb-3">
                        <div>
                            <h5 style="color:#b08d48"><i class="material-icons align-middle">savings</i> Ma Cagnotte</h5>
                            <small>Solde disponible : <strong><?= number_format($solde_cagnotte, 2) ?> €</strong></small>
                        </div>
                        <div class="form-check form-switch">
                            <input class="form-check-input" type="checkbox" name="use_cagnotte" value="1" id="checkCagnotte" onchange="calcTotal()" <?= $solde_cagnotte <= 0 ? 'disabled' : '' ?>>
                            <label class="form-check-label fw-bold" for="checkCagnotte">Utiliser ma cagnotte</label>
                        </div>
                    </div>
                    <hr>
                    <div class="d-flex justify-content-between align-items-center">
                        <span class="fs-5">Net à payer :</span>
                        <span class="fs-3 fw-bold text-success" id="finalToPay">0.00 €</span>
                    </div>
                </div>
            </div>

            <div class="text-end mb-5">
                <button type="submit" class="btn btn-gold btn-lg px-5">Valider la commande</button>
            </div>
        </form>
    </div>

    <script src="https://code.jquery.com/jquery-3.6.0.min.js"></script>
    <script src="https://cdn.jsdelivr.net/npm/select2@4.1.0-rc.0/dist/js/select2.min.js"></script>
    <script>
        const catalog = <?= json_encode($produits) ?>;
        const soldeCagnotte = <?= $solde_cagnotte ?>;

        $(document).ready(function() { $('.select2-basic').select2(); addProductRow(); });

        function addProductRow() {
            // (Même code que précédemment pour ajouter ligne + Select2 products...)
            // J'abrège pour la lisibilité, reprenez le bloc JS du code précédent pour "addProductRow"
            // L'essentiel est qu'il appelle calcTotal() à chaque changement
            
            const container = document.getElementById('cartItems');
            let options = '<option value="">-- Code ou Nom --</option>';
            catalog.forEach(p => { options += `<option value="${p.id}" data-price="${p.prix_unitaire}">[${p.reference}] ${p.nom}</option>`; });

            const row = document.createElement('tr');
            row.className = 'product-row';
            row.innerHTML = `
                <td width="60%"><select name="produits[]" class="form-select prod-select" style="width:100%">${options}</select></td>
                <td width="20%"><input type="text" class="form-control-plaintext price-display text-end" readonly value="0.00 €"></td>
                <td width="10%"><input type="number" name="quantites[]" class="form-control text-center" value="1" min="1" onchange="calcTotal()" onkeyup="calcTotal()"></td>
                <td width="10%"><button type="button" class="btn btn-link text-danger" onclick="this.closest('tr').remove();calcTotal()">X</button></td>
            `;
            container.appendChild(row);
            $(row).find('.prod-select').select2({width:'100%'}).on('select2:select', function(){
                let price = this.options[this.selectedIndex].getAttribute('data-price');
                this.closest('tr').querySelector('.price-display').value = price + ' €';
                calcTotal();
            });
        }

        function calcTotal() {
            let total = 0;
            document.querySelectorAll('.product-row').forEach(row => {
                let sel = row.querySelector('select');
                let qty = row.querySelector('input[type="number"]').value;
                if(sel.selectedIndex > 0) {
                    total += parseFloat(sel.options[sel.selectedIndex].getAttribute('data-price')) * qty;
                }
            });
            
            document.getElementById('grandTotal').innerText = total.toFixed(2);

            // Calcul Cagnotte
            let deduction = 0;
            if(document.getElementById('checkCagnotte').checked) {
                deduction = Math.min(total, soldeCagnotte);
            }
            let net = total - deduction;
            document.getElementById('finalToPay').innerText = net.toFixed(2) + " €";
        }
    </script>
</body>
</html>