<?php
$pageTitle = "Control de Calidad - Lotes";
require_once __DIR__ . '/../../config/config.php';
requirePermiso('control_calidad');

$db = Database::getInstance()->getConnection();

// Verificar si las tablas existen
try {
    $db->query("SELECT 1 FROM cc_lotes LIMIT 1");
} catch (PDOException $e) {
    die("Error: Las tablas de Control de Calidad no existen. Por favor ejecute el script de creación de tablas en la base de datos.");
}

// Obtener lotes con estadísticas
$query = "SELECT l.*, 
          COUNT(DISTINCT lp.id) as total_parametros,
          COUNT(DISTINCT r.id) as total_resultados,
          SUM(CASE WHEN r.estado = 'Aceptado' THEN 1 ELSE 0 END) as resultados_aceptados,
          SUM(CASE WHEN r.estado = 'Rechazado' THEN 1 ELSE 0 END) as resultados_rechazados
          FROM cc_lotes l
          LEFT JOIN cc_lote_parametros lp ON l.id = lp.lote_id
          LEFT JOIN cc_resultados r ON lp.id = r.lote_parametro_id
          GROUP BY l.id
          ORDER BY l.estado = 'Activo' DESC, l.fecha_vencimiento ASC";
$stmt = $db->query($query);
$lotes = $stmt->fetchAll(PDO::FETCH_ASSOC);

// Verificar lotes próximos a vencer (30 días)
$queryProximos = "SELECT COUNT(*) as total FROM cc_lotes 
                  WHERE estado = 'Activo' 
                  AND fecha_vencimiento BETWEEN CURDATE() AND DATE_ADD(CURDATE(), INTERVAL 30 DAY)";
$lotesProximos = $db->query($queryProximos)->fetch()['total'];

require_once __DIR__ . '/../../includes/header.php';
?>

<div class="row mb-4">
    <div class="col-md-6">
        <h2><i class="bi bi-clipboard2-pulse me-2"></i>Control de Calidad</h2>
        <p class="text-muted">Gestión de controles de calidad del laboratorio</p>
    </div>
    <div class="col-md-6 text-end">
        <a href="lotes.php?action=new" class="btn btn-primary">
            <i class="bi bi-plus-circle me-1"></i> Nuevo Lote de Control
        </a>
        <a href="ingresar.php" class="btn btn-success">
            <i class="bi bi-journal-plus me-1"></i> Ingresar Resultado
        </a>
    </div>
</div>

<!-- Navegación del módulo -->
<ul class="nav nav-tabs mb-4">
    <li class="nav-item">
        <a class="nav-link active" href="list.php">
            <i class="bi bi-list-task me-1"></i> Lotes
        </a>
    </li>
    <li class="nav-item">
        <a class="nav-link" href="ingresar.php">
            <i class="bi bi-journal-plus me-1"></i> Ingresar Control
        </a>
    </li>
    <li class="nav-item">
        <a class="nav-link" href="resultados.php">
            <i class="bi bi-clock-history me-1"></i> Historial
        </a>
    </li>
    <li class="nav-item">
        <a class="nav-link" href="graficas.php">
            <i class="bi bi-graph-up me-1"></i> Gráficas L-J
        </a>
    </li>
    <li class="nav-item">
        <a class="nav-link" href="reportes.php">
            <i class="bi bi-file-earmark-bar-graph me-1"></i> Reportes
        </a>
    </li>
    <li class="nav-item">
        <a class="nav-link" href="validar.php">
            <i class="bi bi-patch-check me-1"></i> Validación
        </a>
    </li>
    <li class="nav-item">
        <a class="nav-link" href="reglas.php">
            <i class="bi bi-shield-check me-1"></i> Reglas Westgard
        </a>
    </li>
</ul>

<?php if ($lotesProximos > 0): ?>
<div class="alert alert-warning d-flex align-items-center" role="alert">
    <i class="bi bi-exclamation-triangle-fill me-2 fs-4"></i>
    <div>
        <strong>¡Atención!</strong> Hay <?= $lotesProximos ?> lote(s) de control próximo(s) a vencer en los siguientes 30 días.
    </div>
</div>
<?php endif; ?>

<!-- Tarjetas de estadísticas -->
<div class="row mb-4">
    <div class="col-md-3">
        <div class="card bg-primary text-white">
            <div class="card-body">
                <div class="d-flex justify-content-between align-items-center">
                    <div>
                        <h6 class="mb-0">Lotes Activos</h6>
                        <h2 class="mb-0"><?= count(array_filter($lotes, function ($l) { return $l['estado'] == 'Activo'; })) ?></h2>
                    </div>
                    <i class="bi bi-box-seam fs-1 opacity-50"></i>
                </div>
            </div>
        </div>
    </div>
    <div class="col-md-3">
        <div class="card bg-success text-white">
            <div class="card-body">
                <div class="d-flex justify-content-between align-items-center">
                    <div>
                        <h6 class="mb-0">Controles Hoy</h6>
                        <?php 
                        $queryHoy = "SELECT COUNT(*) as total FROM cc_resultados WHERE DATE(fecha_analisis) = CURDATE()";
                        $controlesHoy = $db->query($queryHoy)->fetch()['total'];
                        ?>
                        <h2 class="mb-0"><?= $controlesHoy ?></h2>
                    </div>
                    <i class="bi bi-check-circle fs-1 opacity-50"></i>
                </div>
            </div>
        </div>
    </div>
    <div class="col-md-3">
        <div class="card bg-warning text-dark">
            <div class="card-body">
                <div class="d-flex justify-content-between align-items-center">
                    <div>
                        <h6 class="mb-0">Por Vencer</h6>
                        <h2 class="mb-0"><?= $lotesProximos ?></h2>
                    </div>
                    <i class="bi bi-clock-history fs-1 opacity-50"></i>
                </div>
            </div>
        </div>
    </div>
    <div class="col-md-3">
        <div class="card bg-info text-white">
            <div class="card-body">
                <div class="d-flex justify-content-between align-items-center">
                    <div>
                        <h6 class="mb-0">Reportes Pendientes</h6>
                        <?php 
                        $queryPend = "SELECT COUNT(*) as total FROM cc_reportes WHERE estado = 'Pendiente'";
                        $reportesPend = $db->query($queryPend)->fetch()['total'];
                        ?>
                        <h2 class="mb-0"><?= $reportesPend ?></h2>
                    </div>
                    <i class="bi bi-file-earmark-text fs-1 opacity-50"></i>
                </div>
            </div>
        </div>
    </div>
</div>

<!-- Menú de navegación del módulo -->
<ul class="nav nav-tabs mb-4">
    <li class="nav-item">
        <a class="nav-link active" href="list.php"><i class="bi bi-box-seam me-1"></i> Lotes</a>
    </li>
    <li class="nav-item">
        <a class="nav-link" href="resultados.php"><i class="bi bi-journal-text me-1"></i> Resultados</a>
    </li>
    <li class="nav-item">
        <a class="nav-link" href="graficas.php"><i class="bi bi-graph-up me-1"></i> Gráficas L-J</a>
    </li>
    <li class="nav-item">
        <a class="nav-link" href="reportes.php"><i class="bi bi-file-earmark-bar-graph me-1"></i> Reportes</a>
    </li>
    <li class="nav-item">
        <a class="nav-link" href="reglas.php"><i class="bi bi-shield-check me-1"></i> Reglas Westgard</a>
    </li>
</ul>

<div class="card">
    <div class="card-header d-flex justify-content-between align-items-center">
        <h5 class="mb-0"><i class="bi bi-box-seam me-2"></i>Lotes de Control</h5>
        <div class="btn-group btn-group-sm">
            <button type="button" class="btn btn-outline-secondary active" data-filter="all">Todos</button>
            <button type="button" class="btn btn-outline-primary" data-filter="Activo">Activos</button>
            <button type="button" class="btn btn-outline-warning" data-filter="Agotado">Agotados</button>
            <button type="button" class="btn btn-outline-danger" data-filter="Vencido">Vencidos</button>
        </div>
    </div>
    <div class="card-body">
        <table id="tablaLotes" class="table table-hover">
            <thead>
                <tr>
                    <th>Código</th>
                    <th>Nombre</th>
                    <th>Nivel</th>
                    <th>Fabricante</th>
                    <th>Vencimiento</th>
                    <th>Parámetros</th>
                    <th>Resultados</th>
                    <th>Estado</th>
                    <th>Acciones</th>
                </tr>
            </thead>
            <tbody>
                <?php foreach ($lotes as $lote): 
                    $diasVencer = (strtotime($lote['fecha_vencimiento']) - time()) / 86400;
                    $claseVencimiento = $diasVencer < 0 ? 'text-danger' : ($diasVencer <= 30 ? 'text-warning' : 'text-success');
                ?>
                <tr data-estado="<?= $lote['estado'] ?>">
                    <td><strong><?= htmlspecialchars($lote['codigo']) ?></strong></td>
                    <td><?= htmlspecialchars($lote['nombre']) ?></td>
                    <td>
                        <span class="badge bg-<?= $lote['nivel'] == 'Normal' ? 'success' : ($lote['nivel'] == 'Alto' ? 'danger' : ($lote['nivel'] == 'Bajo' ? 'info' : 'warning')) ?>">
                            <?= $lote['nivel'] ?>
                        </span>
                    </td>
                    <td><?= htmlspecialchars($lote['fabricante'] ?? '-') ?></td>
                    <td class="<?= $claseVencimiento ?>">
                        <i class="bi bi-calendar-event me-1"></i>
                        <?= date('d/m/Y', strtotime($lote['fecha_vencimiento'])) ?>
                        <?php if ($diasVencer < 0): ?>
                            <br><small class="text-danger">(Vencido)</small>
                        <?php elseif ($diasVencer <= 30): ?>
                            <br><small>(<?= round($diasVencer) ?> días)</small>
                        <?php endif; ?>
                    </td>
                    <td>
                        <span class="badge bg-secondary"><?= $lote['total_parametros'] ?></span>
                    </td>
                    <td>
                        <?php if ($lote['total_resultados'] > 0): 
                            $pctAceptados = ($lote['resultados_aceptados'] / $lote['total_resultados']) * 100;
                        ?>
                            <div class="progress" style="height: 20px; min-width: 100px;">
                                <div class="progress-bar bg-success" style="width: <?= $pctAceptados ?>%" title="Aceptados: <?= $lote['resultados_aceptados'] ?>">
                                    <?= round($pctAceptados) ?>%
                                </div>
                                <div class="progress-bar bg-danger" style="width: <?= 100 - $pctAceptados ?>%" title="Rechazados: <?= $lote['resultados_rechazados'] ?>">
                                </div>
                            </div>
                            <small class="text-muted"><?= $lote['total_resultados'] ?> total</small>
                        <?php else: ?>
                            <span class="text-muted">Sin datos</span>
                        <?php endif; ?>
                    </td>
                    <td>
                        <span class="badge bg-<?= $lote['estado'] == 'Activo' ? 'success' : ($lote['estado'] == 'Vencido' ? 'danger' : ($lote['estado'] == 'Agotado' ? 'warning' : 'secondary')) ?>">
                            <?= $lote['estado'] ?>
                        </span>
                    </td>
                    <td>
                        <div class="btn-group btn-group-sm">
                            <a href="parametros.php?lote_id=<?= $lote['id'] ?>" class="btn btn-outline-primary" title="Configurar Parámetros">
                                <i class="bi bi-sliders"></i>
                            </a>
                            <a href="ingresar.php?lote_id=<?= $lote['id'] ?>" class="btn btn-outline-success" title="Ingresar Resultado">
                                <i class="bi bi-plus-lg"></i>
                            </a>
                            <a href="graficas.php?lote_id=<?= $lote['id'] ?>" class="btn btn-outline-info" title="Ver Gráficas">
                                <i class="bi bi-graph-up"></i>
                            </a>
                            <a href="lotes.php?action=edit&id=<?= $lote['id'] ?>" class="btn btn-outline-secondary" title="Editar">
                                <i class="bi bi-pencil"></i>
                            </a>
                        </div>
                    </td>
                </tr>
                <?php endforeach; ?>
            </tbody>
        </table>
    </div>
</div>

<script>
document.addEventListener('DOMContentLoaded', function() {
    // DataTable
    const tabla = $('#tablaLotes').DataTable({
        language: { url: '//cdn.datatables.net/plug-ins/1.13.6/i18n/es-ES.json' },
        order: [[4, 'asc']],
        pageLength: 25
    });
    
    // Filtros por estado
    document.querySelectorAll('[data-filter]').forEach(btn => {
        btn.addEventListener('click', function() {
            document.querySelectorAll('[data-filter]').forEach(b => b.classList.remove('active'));
            this.classList.add('active');
            
            const filter = this.dataset.filter;
            if (filter === 'all') {
                tabla.column(7).search('').draw();
            } else {
                tabla.column(7).search(filter).draw();
            }
        });
    });
});
</script>

<?php require_once __DIR__ . '/../../includes/footer.php'; ?>
