<?php
/**
 * Verificador de estado del Módulo Laboratorio
 * Acceso: php lab_status.php (CLI) o browser con sesión admin
 */
$isCli = php_sapi_name() === 'cli';

if (!$isCli) {
    require_once 'config/config.php';
if (!defined('APP_ROOT')) { define('APP_ROOT', __DIR__); }
    if (!isUserLoggedIn()) {
        header('Location: login.php'); exit;
    }
}

require_once 'classes/Database.php';

$checks = [];
$allOk  = true;

// ── 1. Tablas de base de datos ─────────────────────────────────────────────
$tables = [
    'lab_pacientes', 'lab_enfermeras', 'lab_ordenes_medicas',
    'lab_domicilios', 'lab_asignaciones', 'lab_autorizaciones', 'lab_actividad_admin',
];

$db = Database::getInstance();
foreach ($tables as $t) {
    try {
        $db->query("SELECT 1 FROM `{$t}` LIMIT 1", []);
        $checks[] = ['ok' => true,  'msg' => "Tabla `$t` ✔"];
    } catch (Exception $e) {
        $checks[] = ['ok' => false, 'msg' => "Tabla `$t` ✘ — NO EXISTE (ejecuta migrations/20260302_lab_run_migrations.php)"];
        $allOk = false;
    }
}

// ── 2. Archivos de clases ──────────────────────────────────────────────────
$classFiles = [
    'classes/lab/ActividadAdmin.php',
    'classes/lab/Paciente.php',
    'classes/lab/Enfermera.php',
    'classes/lab/OrdenMedica.php',
    'classes/lab/Domicilio.php',
    'classes/lab/Asignacion.php',
];
foreach ($classFiles as $f) {
    $ok = file_exists(__DIR__ . '/' . $f);
    if (!$ok) $allOk = false;
    $checks[] = ['ok' => $ok, 'msg' => "Clase $f " . ($ok ? '✔' : '✘ — FALTA')];
}

// ── 3. Endpoints API ──────────────────────────────────────────────────────
$apiFiles = [
    'api/lab/_helpers.php', 'api/lab/get_pacientes.php', 'api/lab/save_paciente.php',
    'api/lab/get_ordenes.php', 'api/lab/save_orden.php', 'api/lab/autorizar_orden.php',
    'api/lab/get_domicilios.php', 'api/lab/save_domicilio.php', 'api/lab/get_enfermeras.php',
    'api/lab/save_enfermera.php', 'api/lab/get_asignaciones.php', 'api/lab/save_asignacion.php',
    'api/lab/get_actividad.php', 'api/lab/get_stats.php', 'api/lab/crear_desde_whatsapp.php',
];
foreach ($apiFiles as $f) {
    $ok = file_exists(__DIR__ . '/' . $f);
    if (!$ok) $allOk = false;
    $checks[] = ['ok' => $ok, 'msg' => "API $f " . ($ok ? '✔' : '✘ — FALTA')];
}

// ── 4. Vistas (páginas PHP) ───────────────────────────────────────────────
$views = ['lab_dashboard.php','lab_ordenes.php','lab_pacientes.php','lab_domicilios.php','lab_enfermeras.php','lab_reportes.php'];
foreach ($views as $v) {
    $ok = file_exists(__DIR__ . '/' . $v);
    if (!$ok) $allOk = false;
    $checks[] = ['ok' => $ok, 'msg' => "Vista $v " . ($ok ? '✔' : '✘ — FALTA')];
}

// ── 5. Directorio uploads ─────────────────────────────────────────────────
$uploadsOk = is_dir(__DIR__ . '/uploads/media') && is_writable(__DIR__ . '/uploads/media');
if (!$uploadsOk) $allOk = false;
$checks[] = ['ok' => $uploadsOk, 'msg' => 'Directorio uploads/media ' . ($uploadsOk ? '✔ (writable)' : '✘ — no existe o sin permisos de escritura')];

// ── Salida ─────────────────────────────────────────────────────────────────
if ($isCli) {
    echo "\n=== Módulo Laboratorio — Estado del sistema ===\n\n";
    foreach ($checks as $c) {
        echo ($c['ok'] ? '  [OK]  ' : '  [!!]  ') . $c['msg'] . "\n";
    }
    echo "\n" . ($allOk ? "✔  Todo correcto." : "✘  Hay problemas — revisa los puntos marcados con [!!]") . "\n\n";
    exit($allOk ? 0 : 1);
}

$adminNombre = $_SESSION['admin_user']['full_name'] ?? $_SESSION['admin_user']['username'] ?? 'Admin';
?>
<!DOCTYPE html>
<html lang="es">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Estado Módulo Lab</title>
    <link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.0/css/all.min.css" rel="stylesheet">
    <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/css/bootstrap.min.css" rel="stylesheet">
    <link href="./assets/css/styles.css?v=12" rel="stylesheet">
</head>
<body>
<?php
$SIDEBAR_TITLE = 'Panel Lab';
$SIDEBAR_ICON  = 'fas fa-flask';
require_once __DIR__ . '/shared/components/sidebar.php';
?>
<main class="main-content">
    <header class="content-header">
        <h1><i class="fas fa-stethoscope text-primary"></i> Estado del Módulo Laboratorio</h1>
        <small class="text-muted"><?= htmlspecialchars($adminNombre) ?></small>
    </header>
    <div class="container-fluid py-3">
        <div class="alert alert-<?= $allOk ? 'success' : 'danger' ?> d-flex align-items-center gap-2 mb-3">
            <i class="fas fa-<?= $allOk ? 'check-circle' : 'exclamation-triangle' ?> fs-4"></i>
            <span class="fw-semibold"><?= $allOk ? 'Módulo instalado correctamente' : 'Se encontraron problemas — revisa los elementos marcados en rojo' ?></span>
        </div>
        <div class="card border-0 shadow-sm">
            <div class="card-body p-0">
                <table class="table table-hover mb-0">
                    <thead class="table-light"><tr><th>Verificación</th><th>Estado</th></tr></thead>
                    <tbody>
                        <?php foreach ($checks as $c): ?>
                        <tr>
                            <td><?= htmlspecialchars($c['msg']) ?></td>
                            <td><span class="badge bg-<?= $c['ok'] ? 'success' : 'danger' ?>"><?= $c['ok'] ? 'OK' : 'ERROR' ?></span></td>
                        </tr>
                        <?php endforeach; ?>
                    </tbody>
                </table>
            </div>
        </div>
        <?php if (!$allOk): ?>
        <div class="alert alert-warning mt-3">
            <h6 class="fw-semibold"><i class="fas fa-wrench me-2"></i>Pasos para solucionar:</h6>
            <ol class="mb-0">
                <li>Ejecuta las migraciones: <code>php migrations/20260302_lab_run_migrations.php</code></li>
                <li>Verifica que todos los archivos de <code>classes/lab/</code> y <code>api/lab/</code> existen</li>
                <li>Asegúrate de que <code>uploads/media/</code> tiene permisos 755 o 775</li>
            </ol>
        </div>
        <?php endif; ?>
        <?php if ($allOk): ?>
        <div class="mt-3">
            <a href="lab_dashboard.php" class="btn btn-success"><i class="fas fa-flask me-2"></i>Ir al Módulo Laboratorio</a>
        </div>
        <?php endif; ?>
    </div>
</main>
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/js/bootstrap.bundle.min.js"></script>
</body>
</html>
