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

$utilisateur_id = $_SESSION['user']['id'] ?? null;
if (!$utilisateur_id) {
    throw new Exception("Utilisateur non authentifié");
}

if ($_SERVER["REQUEST_METHOD"] === "POST") {

    $client_id   = (int)($_POST['client_id'] ?? 0);
    $produits    = $_POST['produits'] ?? [];
    $date_devis  = $_POST['date_devis'] ?? date("Y-m-d H:i:s");
    $taxe        = (float)($_POST['taxe'] ?? 0);
    $remise      = (float)($_POST['remise'] ?? 0);

    if (!$client_id) {
        throw new Exception("Client obligatoire");
    }

    if (empty($produits)) {
        throw new Exception("Aucun produit sélectionné");
    }

    /* ===============================
       NUMÉRO AUTO
    ================================= */
    $stmt = $conn->prepare("
        SELECT COUNT(*) 
        FROM devis 
        WHERE YEAR(date_devis)=YEAR(NOW()) 
        AND MONTH(date_devis)=MONTH(NOW())
    ");
    $stmt->execute();
    $nb = $stmt->fetchColumn();

    $numero = "DV-" . date("Y/m") . "-" . str_pad($nb + 1, 3, "0", STR_PAD_LEFT);

    /* ===============================
       TRANSACTION
    ================================= */
    $conn->beginTransaction();

    try {

        $total_ht = 0;

        /* ===============================
           CALCUL TOTAL
        ================================= */
        foreach ($produits as $prod) {

            $quantite = (float)$prod['quantite'];
            $prix = (float)$prod['prix']; // 🔥 vient du formulaire

            if ($quantite <= 0 || $prix <= 0) {
                throw new Exception("Quantité ou prix invalide");
            }

            $total_ht += $quantite * $prix;
        }

        $total_ttc = $total_ht + $taxe - $remise;


        $statut = 'brouillon';

        /* ===============================
           INSERT DEVIS
        ================================= */
        $stmt = $conn->prepare("
            INSERT INTO devis 
            (numero, client_id, date_devis, total_ht, taxe, remise, total_ttc,
             statut, utilisateur_id, created_at)
            VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, NOW())
        ");

        $stmt->execute([
            $numero,
            $client_id,
            $date_devis,
            $total_ht,
            $taxe,
            $remise,
            $total_ttc,
            $statut,
            $utilisateur_id
        ]);

        $devis_id = $conn->lastInsertId();

        /* ===============================
           DETAILS DEVIS
        ================================= */
        foreach ($produits as $prod) {

            $quantite = (float)$prod['quantite'];
            $prix = (float)$prod['prix'];
            $total = $quantite * $prix;

            $stmt = $conn->prepare("
                INSERT INTO devis_details 
                (devis_id, produit_id, quantite, prix, total)
                VALUES (?,?,?,?,?)
            ");

            $stmt->execute([
                $devis_id,
                $prod['id'],
                $quantite,
                $prix,
                $total
            ]);
        }

        $conn->commit();

    } catch (Exception $e) {
        $conn->rollBack();
        die("Erreur : " . $e->getMessage());
    }
}

header("Location: /eagle_client_istanbulcups/index.php?page=devis");
exit;