<?php
require_once __DIR__ . '/../../../config/db.php';
require_once __DIR__ . '/../print/print_ticket_service.php';

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

$commande_id = (int)($_POST['commande_id'] ?? 0);

if ($commande_id <= 0) {
    echo json_encode(['success' => false, 'message' => 'Commande invalide']);
    exit;
}

/*  Lignes NON imprimées */
$stmt = $conn->prepare("
    SELECT 
        cl.id,
        cl.quantite,
        cl.prix_vente,
        cl.service_id,
        p.nom AS produit_nom
    FROM commande_lignes cl
    JOIN produits p ON p.id = cl.produit_id
    WHERE cl.commande_id = ?
      AND cl.imprime = 0
");
$stmt->execute([$commande_id]);
$lignes = $stmt->fetchAll(PDO::FETCH_ASSOC);

if (!$lignes) {
    echo json_encode(['success' => false, 'message' => 'Aucun produit à envoyer']);
    exit;
}

/*  Groupement par service */
$grouped = [];
foreach ($lignes as $l) {
    $grouped[$l['service_id']][] = $l;
}

/*  Impression par service */
foreach ($grouped as $service_id => $items) {

    $stmt = $conn->prepare("
        SELECT nom, imprimante_ip
        FROM services
        WHERE id = ?
    ");
    $stmt->execute([$service_id]);
    $service = $stmt->fetch(PDO::FETCH_ASSOC);

    if (!$service || empty($service['imprimante_ip'])) {
        continue; // service mal configuré
    }

    imprimerTicketService(
        $service['imprimante_ip'],
        $service['nom'],
        $commande_id,
        $items
    );

    /* Marquer comme imprimé */
    $ids = array_column($items, 'id');
    $conn->exec("
        UPDATE commande_lignes
        SET imprime = 1
        WHERE id IN (" . implode(',', array_map('intval', $ids)) . ")
    ");
}

echo json_encode(['success' => true]);
