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

header('Content-Type: application/json');

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

    if (!isset($_POST['product_id']) || !isset($_POST['quantity'])) {
        throw new Exception('Données manquantes');
    }

    $productId = (int)$_POST['product_id'];
    $quantity = (int)$_POST['quantity'];

    if ($quantity < 1) {
        throw new Exception('La quantité doit être supérieure à 0');
    }

    $db = new Database();
    $pdo = $db->getConnection();

    // Vérifier le stock
    $stmt = $pdo->prepare('SELECT quantity FROM products WHERE id = ?');
    $stmt->execute([$productId]);
    $product = $stmt->fetch(PDO::FETCH_ASSOC);

    if (!$product) {
        throw new Exception('Produit non trouvé');
    }

    if ($quantity > $product['quantity']) {
        throw new Exception('Quantité non disponible en stock');
    }

    // Initialiser le panier si nécessaire
    if (!isset($_SESSION['cart'])) {
        $_SESSION['cart'] = [];
    }

    // Mettre à jour la quantité dans le panier
    if (isset($_SESSION['cart'][$productId])) {
        $newQuantity = $_SESSION['cart'][$productId] + $quantity;
        if ($newQuantity > $product['quantity']) {
            throw new Exception('La quantité totale dépasse le stock disponible');
        }
        $_SESSION['cart'][$productId] = $newQuantity;
    } else {
        $_SESSION['cart'][$productId] = $quantity;
    }

    echo json_encode([
        'success' => true,
        'message' => 'Produit ajouté au panier'
    ]);

} catch (Exception $e) {
    http_response_code(400);
    echo json_encode([
        'error' => $e->getMessage()
    ]);
}
