<?php
$pageTitle = "Historial de Resultados QC";
require_once __DIR__ . '/../../config/config.php';
requirePermiso('control_calidad');

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

$lote_id = $_GET['lote_id'] ?? '';
$estado = $_GET['estado'] ?? '';
$fecha_inicio = $_GET['fecha_inicio'] ?? date('Y-m-01');
$fecha_fin = $_GET['fecha_fin'] ?? date('Y-m-d');

// Obtener lotes
$lotes = $db->query("SELECT * FROM cc_lotes ORDER BY codigo")->fetchAll(PDO::FETCH_ASSOC);

// Construir consulta
$where = ["DATE(r.fecha_analisis) BETWEEN ? AND ?"];
$params = [$fecha_inicio, $fecha_fin];

if ($lote_id) {
    $where[] = "l.id = ?";
    $params[] = $lote_id;
}
if ($estado) {
    $where[] = "r.estado = ?";
    $params[] = $estado;
}

$sql = "SELECT r.*, l.codigo as lote_codigo, l.nombre as lote_nombre,
               pe.nombre as parametro_nombre, e.nombre as examen_nombre,
               u.nombre as analista_nombre, lp.valor_asignado, lp.desviacion_estandar
        FROM cc_resultados r
        JOIN cc_lote_parametros lp ON r.lote_parametro_id = lp.id
        JOIN cc_lotes l ON lp.lote_id = l.id
        JOIN parametros_examen pe ON lp.parametro_id = pe.id
        JOIN examenes e ON pe.examen_id = e.id
        LEFT JOIN usuarios u ON r.analista_id = u.id
        WHERE " . implode(" AND ", $where) . "
        ORDER BY r.fecha_analisis DESC";

$stmt = $db->prepare($sql);
$stmt->execute($params);
$resultados = $stmt->fetchAll(PDO::FETCH_ASSOC);

// Estadísticas
$stats = ['total' => count($resultados), 'aceptados' => 0, 'alertas' => 0, 'rechazados' => 0];
foreach ($resultados as $r) {
    if ($r['estado'] == 'Aceptado') $stats['aceptados']++;
    elseif ($r['estado'] == 'Alerta') $stats['alertas']++;
    elseif ($r['estado'] == 'Rechazado') $stats['rechazados']++;
}

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

<div class="row mb-4">
    <div class="col-12">
        <nav aria-label="breadcrumb">
            <ol class="breadcrumb">
                <li class="breadcrumb-item"><a href="list.php">Control de Calidad</a></li>
                <li class="breadcrumb-item active">Historial de Resultados</li>
            </ol>
        </nav>
        <h2><i class="bi bi-clock-history me-2"></i>Historial de Resultados QC</h2>
    </div>
</div>

<!-- Filtros -->
<div class="card mb-4">
    <div class="card-body">
        <form method="GET" class="row g-3 align-items-end">
            <div class="col-md-3">
                <label class="form-label">Lote de Control</label>
                <select name="lote_id" class="form-select">
                    <option value="">-- Todos --</option>
                    <?php foreach ($lotes as $l): ?>
                    <option value="<?= $l['id'] ?>" <?= $lote_id == $l['id'] ? 'selected' : '' ?>>
                        <?= htmlspecialchars($l['codigo']) ?> - <?= htmlspecialchars($l['nombre']) ?>
                    </option>
                    <?php endforeach; ?>
                </select>
            </div>
            <div class="col-md-2">
                <label class="form-label">Estado</label>
                <select name="estado" class="form-select">
                    <option value="">-- Todos --</option>
                    <option value="Aceptado" <?= $estado == 'Aceptado' ? 'selected' : '' ?>>Aceptado</option>
                    <option value="Alerta" <?= $estado == 'Alerta' ? 'selected' : '' ?>>Alerta</option>
                    <option value="Rechazado" <?= $estado == 'Rechazado' ? 'selected' : '' ?>>Rechazado</option>
                </select>
            </div>
            <div class="col-md-2">
                <label class="form-label">Desde</label>
                <input type="date" name="fecha_inicio" class="form-control" value="<?= $fecha_inicio ?>">
            </div>
            <div class="col-md-2">
                <label class="form-label">Hasta</label>
                <input type="date" name="fecha_fin" class="form-control" value="<?= $fecha_fin ?>">
            </div>
            <div class="col-md-3">
                <button type="submit" class="btn btn-primary">
                    <i class="bi bi-filter me-1"></i> Filtrar
                </button>
                <a href="resultados.php" class="btn btn-outline-secondary">
                    <i class="bi bi-x-circle me-1"></i> Limpiar
                </a>
            </div>
        </form>
    </div>
</div>

<!-- Resumen -->
<div class="row mb-4">
    <div class="col-md-3">
        <div class="card text-bg-primary">
            <div class="card-body">
                <h5 class="card-title"><?= $stats['total'] ?></h5>
                <p class="card-text">Total Controles</p>
            </div>
        </div>
    </div>
    <div class="col-md-3">
        <div class="card text-bg-success">
            <div class="card-body">
                <h5 class="card-title"><?= $stats['aceptados'] ?></h5>
                <p class="card-text">Aceptados (<?= $stats['total'] > 0 ? round($stats['aceptados']/$stats['total']*100) : 0 ?>%)</p>
            </div>
        </div>
    </div>
    <div class="col-md-3">
        <div class="card text-bg-warning">
            <div class="card-body">
                <h5 class="card-title"><?= $stats['alertas'] ?></h5>
                <p class="card-text">Alertas</p>
            </div>
        </div>
    </div>
    <div class="col-md-3">
        <div class="card text-bg-danger">
            <div class="card-body">
                <h5 class="card-title"><?= $stats['rechazados'] ?></h5>
                <p class="card-text">Rechazados</p>
            </div>
        </div>
    </div>
</div>

<!-- Tabla de resultados -->
<div class="card">
    <div class="card-header d-flex justify-content-between align-items-center">
        <h5 class="mb-0"><i class="bi bi-table me-2"></i>Resultados</h5>
        <button class="btn btn-sm btn-outline-success" onclick="exportarExcel()">
            <i class="bi bi-file-earmark-excel me-1"></i> Exportar Excel
        </button>
    </div>
    <div class="card-body">
        <div class="table-responsive">
            <table class="table table-striped table-hover" id="tablaResultados">
                <thead class="table-dark">
                    <tr>
                        <th>Fecha/Hora</th>
                        <th>Lote</th>
                        <th>Examen</th>
                        <th>Parámetro</th>
                        <th>Valor Esperado</th>
                        <th>Valor Obtenido</th>
                        <th>Z-Score</th>
                        <th>Estado</th>
                        <th>Reglas Violadas</th>
                        <th>Analista</th>
                        <th>Acciones</th>
                    </tr>
                </thead>
                <tbody>
                    <?php foreach ($resultados as $r): ?>
                    <tr>
                        <td>
                            <small><?= date('d/m/Y', strtotime($r['fecha_analisis'])) ?></small><br>
                            <small class="text-muted"><?= date('H:i', strtotime($r['fecha_analisis'])) ?></small>
                        </td>
                        <td>
                            <span class="badge bg-secondary"><?= htmlspecialchars($r['lote_codigo']) ?></span><br>
                            <small><?= htmlspecialchars($r['lote_nombre']) ?></small>
                        </td>
                        <td><small><?= htmlspecialchars($r['examen_nombre']) ?></small></td>
                        <td><strong><?= htmlspecialchars($r['parametro_nombre']) ?></strong></td>
                        <td class="text-center">
                            <?= number_format($r['valor_asignado'], 2) ?>
                            <br><small class="text-muted">±<?= number_format($r['desviacion_estandar'], 3) ?></small>
                        </td>
                        <td class="text-center">
                            <strong class="<?= $r['estado'] == 'Rechazado' ? 'text-danger' : ($r['estado'] == 'Alerta' ? 'text-warning' : '') ?>">
                                <?= is_numeric($r['valor_obtenido']) ? number_format($r['valor_obtenido'], 2) : htmlspecialchars($r['valor_obtenido']) ?>
                            </strong>
                        </td>
                        <td class="text-center">
                            <?php if ($r['z_score'] !== null): ?>
                            <span class="badge bg-<?= abs($r['z_score']) > 3 ? 'danger' : (abs($r['z_score']) > 2 ? 'warning' : (abs($r['z_score']) > 1 ? 'info' : 'success')) ?>">
                                <?= number_format($r['z_score'], 2) ?>
                            </span>
                            <?php else: ?>
                            <span class="text-muted">N/A</span>
                            <?php endif; ?>
                        </td>
                        <td class="text-center">
                            <span class="badge bg-<?= $r['estado'] == 'Aceptado' ? 'success' : ($r['estado'] == 'Rechazado' ? 'danger' : 'warning') ?>">
                                <?= $r['estado'] ?>
                            </span>
                        </td>
                        <td>
                            <?php if ($r['reglas_violadas']): ?>
                            <span class="badge bg-danger"><?= htmlspecialchars($r['reglas_violadas']) ?></span>
                            <?php else: ?>
                            <span class="text-muted">-</span>
                            <?php endif; ?>
                        </td>
                        <td><small><?= htmlspecialchars($r['analista_nombre'] ?? 'N/A') ?></small></td>
                        <td>
                            <a href="graficas.php?lote_id=<?= $r['lote_parametro_id'] ?>" 
                               class="btn btn-sm btn-outline-primary" title="Ver gráfica">
                                <i class="bi bi-graph-up"></i>
                            </a>
                            <?php if ($r['observaciones']): ?>
                            <button class="btn btn-sm btn-outline-info" 
                                    data-bs-toggle="tooltip" title="<?= htmlspecialchars($r['observaciones']) ?>">
                                <i class="bi bi-chat-text"></i>
                            </button>
                            <?php endif; ?>
                        </td>
                    </tr>
                    <?php endforeach; ?>
                </tbody>
            </table>
        </div>
    </div>
</div>

<script>
document.addEventListener('DOMContentLoaded', function() {
    // Inicializar tooltips
    var tooltipTriggerList = [].slice.call(document.querySelectorAll('[data-bs-toggle="tooltip"]'));
    var tooltipList = tooltipTriggerList.map(function (tooltipTriggerEl) {
        return new bootstrap.Tooltip(tooltipTriggerEl);
    });
    
    // DataTable si está disponible
    if (typeof $.fn.DataTable !== 'undefined') {
        $('#tablaResultados').DataTable({
            language: {
                url: '//cdn.datatables.net/plug-ins/1.13.4/i18n/es-ES.json'
            },
            order: [[0, 'desc']],
            pageLength: 25
        });
    }
});

function exportarExcel() {
    const table = document.getElementById('tablaResultados');
    const rows = table.querySelectorAll('tbody tr');
    
    let csv = 'Fecha,Hora,Lote,Examen,Parámetro,Valor Esperado,DE,Valor Obtenido,Z-Score,Estado,Reglas Violadas,Analista\n';
    
    rows.forEach(row => {
        const cells = row.querySelectorAll('td');
        if (cells.length > 1) {
            const fecha = cells[0].textContent.trim().replace(/\n/g, ' ');
            const lote = cells[1].textContent.trim().replace(/\n/g, ' ');
            const examen = cells[2].textContent.trim();
            const parametro = cells[3].textContent.trim();
            const esperado = cells[4].textContent.trim().replace(/\n/g, ',');
            const obtenido = cells[5].textContent.trim();
            const zscore = cells[6].textContent.trim();
            const estado = cells[7].textContent.trim();
            const reglas = cells[8].textContent.trim();
            const analista = cells[9].textContent.trim();
            
            csv += `"${fecha}","${lote}","${examen}","${parametro}","${esperado}","${obtenido}","${zscore}","${estado}","${reglas}","${analista}"\n`;
        }
    });
    
    const blob = new Blob(['\ufeff' + csv], { type: 'text/csv;charset=utf-8;' });
    const url = window.URL.createObjectURL(blob);
    const a = document.createElement('a');
    a.href = url;
    a.download = 'resultados_qc_<?= date('Y-m-d') ?>.csv';
    a.click();
}
</script>

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