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

if (session_status() === PHP_SESSION_NONE) {
    session_start();
}

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

try {

/* =========================
   DEBUG
========================= */
file_put_contents(__DIR__.'/debug.txt', file_get_contents('php://input'), LOCK_EX);

/* =========================
   JSON INPUT
========================= */
$data = json_decode(file_get_contents('php://input'), true);

$commande_id   = (int)($data['commande_id'] ?? 0);
$mode_paiement = trim($data['mode_paiement'] ?? '');
$montant_verse = (float)($data['montant_verse'] ?? 0);

if (!$commande_id || !$mode_paiement || $montant_verse <= 0) {
    throw new Exception("Données invalides ou montant incorrect");
}

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

/* =========================
   CHARGER COMMANDE
========================= */
$stmt = $conn->prepare("SELECT * FROM commandes WHERE id=? AND statut='ouverte'");
$stmt->execute([$commande_id]);
$commande = $stmt->fetch(PDO::FETCH_ASSOC);

if (!$commande) {
    throw new Exception("Commande invalide ou déjà clôturée");
}

/* =========================
   TABLE + CLIENT
========================= */
$table_id  = $commande['table_id']  ?? null;
$client_id = $commande['client_id'] ?? null;

/* =========================
   CHARGER PRODUITS COMMANDE
========================= */
$stmt = $conn->prepare("
    SELECT cl.produit_id AS id, cl.quantite, p.prix_vente
    FROM commande_lignes cl
    JOIN produits p ON p.id = cl.produit_id
    WHERE cl.commande_id = ?
");
$stmt->execute([$commande_id]);
$produits = $stmt->fetchAll(PDO::FETCH_ASSOC);

if (!$produits) {
    throw new Exception("Commande vide");
}

/* =========================
   PRÉPARER $_POST POUR pos_paiement_restaurant.php
========================= */
$_POST['produits']      = array_map(fn($i) => [
    'id'        => $i['id'],
    'quantite'  => $i['quantite'],
    'prix_vente'=> $i['prix_vente'],
], $produits);

$_POST['table_id']      = $table_id;
$_POST['client_id']     = $client_id;
$_POST['mode_paiement'] = $mode_paiement;
$_POST['montant_verse'] = $montant_verse;

/* =========================
   APPEL SCRIPT DE PAIEMENT
========================= */
require __DIR__ . '/pos_paiement_restaurant.php';

/* pos_paiement_restaurant renvoie déjà JSON avec 'success' et 'vente_id' */

ob_end_flush();
exit;

} catch (Throwable $e) {

    if (isset($conn) && $conn->inTransaction()) {
        $conn->rollBack();
    }

    ob_clean();
    error_log($e->getMessage());

    echo json_encode([
        'success' => false,
        'message' => $e->getMessage()
    ]);
    exit;
}
