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

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

$data = json_decode(file_get_contents("php://input"), true);
$id = (int)($data['commande_id'] ?? 0);

if (!$id) {
    echo json_encode(['success'=>false,'message'=>"ID invalide"]);
    exit;
}

$conn->beginTransaction();

try {

    //  Récupérer commande
    $stmt = $conn->prepare("SELECT * FROM commandes_clients WHERE id=?");
    $stmt->execute([$id]);
    $cmd = $stmt->fetch(PDO::FETCH_ASSOC);

    if (!$cmd) {
        throw new Exception("Commande introuvable");
    }

    if ($cmd['statut'] != 'en_cours') {
        throw new Exception("Commande déjà traitée");
    }

    //  Détails commande
    $stmt = $conn->prepare("
        SELECT * FROM commandes_clients_details WHERE commande_id=?
    ");
    $stmt->execute([$id]);
    $details = $stmt->fetchAll(PDO::FETCH_ASSOC);

    foreach ($details as $d) {

        //  ADAPTE depot_id selon ta table
        $depot_id = $d['depot_id'] ?? 1;

        //  Mise à jour stock
            $stmt = $conn->prepare("SELECT id, quantite FROM stock_depot WHERE produit_id = ? AND depot_id = ?");
            $stmt->execute([$d['produit_id'], $depot_id]);
            $stock = $stmt->fetch(PDO::FETCH_ASSOC);

            if ($stock) {
                $conn->prepare("UPDATE stock_depot SET quantite = quantite - ? WHERE produit_id = ? AND depot_id = ?")
                     ->execute([$d['quantite'], $d['produit_id'], $depot_id]);
            } else {
                $conn->prepare("INSERT INTO stock_depot (produit_id, depot_id, quantite) VALUES (?, ?, ?)")
                     ->execute([$d['produit_id'], $depot_id, -$d['quantite']]);
            }

            //  Mouvement de sortie
            $conn->prepare("
                INSERT INTO mouvements_stock 
                (produit_id, depot_source_id, quantite, type, reference_table, reference_id, utilisateur_id, date_mouvement) 
                VALUES (?, ?, ?, 'commande_client', 'commandes_clients', ?, ?, NOW())
            ")->execute([$d['produit_id'], $depot_id, $d['quantite'], data['commande_id'], $utilisateur_id]);
            }

        
    //  MAJ statut
    $conn->prepare("
        UPDATE commandes_clients 
        SET statut='livree' 
        WHERE id=?
    ")->execute([$id]);

     $conn->commit();

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


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