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

$db = getDB();
$id = intval(isset($_GET['id']) ? $_GET['id'] : 0);

// Obtener orden
$stmt = $db->prepare("
    SELECT o.*, p.nombre, p.apellidos, p.documento_numero, p.sexo, p.fecha_nacimiento, p.telefono, p.direccion
    FROM ordenes o 
    JOIN pacientes p ON o.paciente_id = p.id 
    WHERE o.id = ?
");
$stmt->execute([$id]);
$orden = $stmt->fetch();

if (!$orden) {
    die('Orden no encontrada');
}

// Obtener exámenes con categoría
$stmt = $db->prepare("
    SELECT od.*, e.nombre as examen_nombre, e.codigo as examen_codigo, e.requiere_ayuno, e.instrucciones,
           c.nombre as categoria_nombre
    FROM orden_detalle od
    JOIN examenes e ON od.examen_id = e.id
    LEFT JOIN categorias_examenes c ON e.categoria_id = c.id
    WHERE od.orden_id = ?
    ORDER BY c.nombre, e.nombre
");
$stmt->execute([$id]);
$detalles = $stmt->fetchAll();

// Agrupar exámenes por categoría
$detallesPorCategoria = [];
foreach ($detalles as $det) {
    $categoria = $det['categoria_nombre'] ?: 'Sin categoría';
    if (!isset($detallesPorCategoria[$categoria])) {
        $detallesPorCategoria[$categoria] = [];
    }
    $detallesPorCategoria[$categoria][] = $det;
}

// Obtener configuración del laboratorio
$config = $db->query("SELECT * FROM configuracion LIMIT 1")->fetch();
$colorPrimario = $config['color_primario'] ?? '#0097a7';

// Calcular edad del paciente
$edad = '';
if ($orden['fecha_nacimiento']) {
    $nacimiento = new DateTime($orden['fecha_nacimiento']);
    $hoy = new DateTime();
    $diff = $hoy->diff($nacimiento);
    $edad = $diff->y . ' años';
}

?>
<!DOCTYPE html>
<html lang="es">
<head>
    <meta charset="UTF-8">
    <title>Ticket Orden - <?= $orden['codigo'] ?></title>
    <style>
        * { box-sizing: border-box; }
        body {
            font-family: 'Courier New', monospace;
            font-size: 12px;
            color: #000;
            background: #f5f5f5;
            margin: 0;
            padding: 16px;
        }
        .acciones {
            display: flex;
            gap: 8px;
            justify-content: center;
            margin-bottom: 12px;
        }
        .btn {
            text-decoration: none;
            border: 1px solid #444;
            color: #111;
            background: #fff;
            padding: 7px 10px;
            font-size: 12px;
            border-radius: 4px;
            cursor: pointer;
        }
        .ticket {
            width: 80mm;
            max-width: 80mm;
            margin: 0 auto;
            background: #fff;
            border: 1px solid #d6d6d6;
            padding: 8px;
        }
        .center { text-align: center; }
        .linea { border-top: 1px dashed #000; margin: 6px 0; }
        .titulo { font-size: 14px; font-weight: bold; }
        .barra-titulo {
            margin-top: 4px;
            background: <?= $colorPrimario ?>;
            color: #fff;
            padding: 4px 6px;
            border-radius: 4px;
            font-weight: bold;
        }
        .small { font-size: 11px; }
        .row {
            display: flex;
            justify-content: space-between;
            gap: 6px;
        }
        .exam-item {
            padding: 4px 0;
            border-bottom: 1px dotted #999;
        }
        .exam-item:last-child { border-bottom: 0; }
        .codigo { font-weight: bold; }
        .total {
            font-size: 14px;
            font-weight: bold;
        }
        .estado {
            display: inline-block;
            border: 1px solid #000;
            padding: 2px 6px;
            font-size: 11px;
        }
        .categoria {
            margin-top: 4px;
            font-weight: bold;
            border-top: 1px dashed #000;
            padding-top: 3px;
        }
        @media print {
            body { background: #fff; padding: 0; }
            .no-print { display: none !important; }
            .ticket { border: 0; width: 80mm; max-width: 80mm; margin: 0 auto; }
        }
        @page {
            size: 80mm auto;
            margin: 2mm;
        }
    </style>
</head>
<body>
    <div class="acciones no-print">
        <button class="btn" onclick="window.print()">🖨️ Imprimir ticket</button>
        <a href="list.php" class="btn">← Volver</a>
    </div>

    <div class="ticket">
        <div class="center titulo"><?= isset($config['nombre_laboratorio']) ? htmlspecialchars($config['nombre_laboratorio']) : SITE_NAME ?></div>
        <?php if (!empty($config['telefono'])): ?>
        <div class="center small">Tel: <?= htmlspecialchars($config['telefono']) ?></div>
        <?php endif; ?>
        <?php if (!empty($config['direccion'])): ?>
        <div class="center small"><?= htmlspecialchars($config['direccion']) ?></div>
        <?php endif; ?>

        <div class="linea"></div>
        <div class="center barra-titulo">ORDEN <?= htmlspecialchars($orden['codigo']) ?></div>
        <div class="center small"><?= formatDateTime($orden['fecha_orden']) ?></div>
        <div class="center" style="margin-top:4px;">
            <span class="estado"><?= strtoupper(str_replace('_', ' ', $orden['estado'])) ?></span>
        </div>
        <div class="linea"></div>
        <div><strong>Paciente:</strong> <?= htmlspecialchars($orden['nombre'] . ' ' . $orden['apellidos']) ?></div>
        <div><strong>Doc:</strong> <?= htmlspecialchars((string)$orden['documento_numero']) ?></div>
        <div><strong>Sexo/Edad:</strong> <?= $orden['sexo'] == 'M' ? 'M' : 'F' ?><?= $edad ? ' / ' . $edad : '' ?></div>
        <?php if (!empty($orden['medico_solicitante'])): ?>
        <div><strong>Médico:</strong> <?= htmlspecialchars($orden['medico_solicitante']) ?></div>
        <?php endif; ?>

        <div class="linea"></div>
        <div><strong>EXÁMENES</strong></div>
        <?php
        $requiereAyuno = false;
        foreach ($detallesPorCategoria as $categoria => $items):
        ?>
        <div class="categoria"><?= htmlspecialchars($categoria) ?></div>
        <?php foreach ($items as $det):
            if (!empty($det['requiere_ayuno'])) $requiereAyuno = true;
        ?>
        <div class="exam-item">
            <div class="codigo"><?= htmlspecialchars($det['examen_codigo']) ?></div>
            <div><?= htmlspecialchars($det['examen_nombre']) ?></div>
            <div class="row small">
                <span><?= ucfirst($det['estado']) ?></span>
                <span><?= formatMoney($det['precio']) ?></span>
            </div>
        </div>
        <?php endforeach; ?>
        <?php endforeach; ?>

        <div class="linea"></div>
        <div class="row"><span>Subtotal</span><span><?= formatMoney($orden['subtotal']) ?></span></div>
        <?php if ($orden['descuento'] > 0): ?>
        <div class="row"><span>Descuento</span><span>-<?= formatMoney($orden['descuento']) ?></span></div>
        <?php endif; ?>
        <div class="row total"><span>TOTAL</span><span><?= formatMoney($orden['total']) ?></span></div>

        <?php if ($requiereAyuno || !empty($orden['observaciones'])): ?>
        <div class="linea"></div>
        <?php if ($requiereAyuno): ?>
        <div class="small"><strong>* Ayuno:</strong> 8-12 horas</div>
        <?php endif; ?>
        <?php if (!empty($orden['observaciones'])): ?>
        <div class="small"><strong>Obs:</strong> <?= htmlspecialchars($orden['observaciones']) ?></div>
        <?php endif; ?>
        <?php endif; ?>

        <div class="linea"></div>
        <div class="center small">Impreso: <?= date('d/m/Y H:i:s') ?></div>
        <div class="center small">Gracias por su confianza</div>
    </div>
</body>
</html>
