<?php
require 'conexion2.php';

date_default_timezone_set('America/Caracas');

function h($v) {
    return htmlspecialchars((string)$v, ENT_QUOTES, 'UTF-8');
}

$fecha_inicio = isset($_POST['fecha_inicio']) && $_POST['fecha_inicio'] !== '' ? $_POST['fecha_inicio'] : date('Y-m-01');
$fecha_fin = isset($_POST['fecha_fin']) && $_POST['fecha_fin'] !== '' ? $_POST['fecha_fin'] : date('Y-m-d');
$reportes = [];
$totales = [
    'registros' => 0,
    'con_salida' => 0,
    'sin_salida' => 0,
    'horas' => 0,
];

if (isset($_POST['generar'])) {
    $stmt = $db->prepare("
        SELECT
            p.cedula,
            p.nombre,
            p.apellido,
            a.fecha_entrada,
            a.fecha_salida,
            CASE
                WHEN a.fecha_salida IS NULL THEN 'ABIERTA'
                ELSE 'CERRADA'
            END AS estado_jornada,
            TIMESTAMPDIFF(MINUTE, a.fecha_entrada, a.fecha_salida) AS minutos_trabajados
        FROM asistencia a
        INNER JOIN personas p ON p.id = a.persona_id
        WHERE DATE(a.fecha_entrada) BETWEEN ? AND ?
        ORDER BY a.fecha_entrada ASC, p.apellido ASC, p.nombre ASC
    ");
    $stmt->execute([$fecha_inicio, $fecha_fin]);
    $reportes = $stmt->fetchAll(PDO::FETCH_ASSOC);

    foreach ($reportes as $row) {
        $totales['registros']++;
        if (!empty($row['fecha_salida'])) {
            $totales['con_salida']++;
            $totales['horas'] += max(0, (int)$row['minutos_trabajados']);
        } else {
            $totales['sin_salida']++;
        }
    }
}
?>
<!DOCTYPE html>
<html lang="es">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Reporte de Asistencia</title>
    <link rel="preconnect" href="https://fonts.googleapis.com">
    <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
    <link href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700&display=swap" rel="stylesheet">
    <style>
        :root {
            --primary: #1a3c8b;
            --accent: #4CAF50;
            --warning: #FF9800;
            --danger: #e11d48;
            --bg: #f5f7fa;
            --card: #ffffff;
            --border: #e1e5eb;
            --text: #2c3e50;
            --muted: #6b7280;
        }
        * { box-sizing: border-box; }
        body {
            margin: 0;
            font-family: 'Inter', sans-serif;
            background: var(--bg);
            color: var(--text);
        }
        .wrap { max-width: 1200px; margin: 24px auto; padding: 0 16px; }
        .card {
            background: var(--card);
            border: 1px solid var(--border);
            border-radius: 16px;
            box-shadow: 0 8px 24px rgba(16,24,40,.08);
            padding: 20px;
            margin-bottom: 16px;
        }
        .topbar { display:flex; justify-content:space-between; align-items:center; gap:12px; flex-wrap:wrap; }
        .title { font-size: 24px; font-weight: 700; }
        .subtitle { color: var(--muted); margin-top: 4px; }
        .btn, button {
            appearance:none; border:none; cursor:pointer; text-decoration:none;
            display:inline-flex; align-items:center; justify-content:center;
            padding: 10px 14px; border-radius: 12px; font-weight:600;
            background: var(--primary); color:#fff;
        }
        .btn.secondary { background:#fff; color: var(--primary); border:1px solid rgba(26,60,139,.25); }
        .grid { display:grid; grid-template-columns: repeat(12, 1fr); gap:12px; }
        .col-3 { grid-column: span 3; }
        .col-12 { grid-column: span 12; }
        @media (max-width: 900px) { .col-3 { grid-column: span 12; } }
        label { display:block; font-size:12px; font-weight:600; margin-bottom:6px; color:#374151; }
        input[type=date] {
            width:100%; padding:10px 12px; border:1px solid var(--border); border-radius:12px;
        }
        table { width:100%; border-collapse: collapse; }
        th, td { padding: 10px 12px; border-bottom:1px solid #eef2f7; font-size: 13px; text-align:left; }
        th { background:#fafafa; }
        .kpi { border-left:4px solid var(--primary); }
        .kpi .n { font-size: 24px; font-weight:700; margin-top:6px; }
        .muted { color: var(--muted); font-size:12px; }
        .estado { display:inline-flex; padding:4px 8px; border-radius:999px; font-size:12px; font-weight:600; }
        .estado.ok { background: rgba(76,175,80,.12); color:#166534; }
        .estado.warn { background: rgba(255,152,0,.12); color:#9a3412; }
    </style>
</head>
<body>
<div class="wrap">
    <div class="card topbar">
        <div>
            <div class="title">Reporte de Asistencia</div>
            <div class="subtitle">Consulta entradas y salidas usando la estructura actual de la tabla <b>asistencia</b>.</div>
        </div>
        <div><a class="btn secondary" href="index.php">Volver al dashboard</a></div>
    </div>

    <div class="card">
        <form method="post">
            <div class="grid">
                <div class="col-3">
                    <label>Fecha inicio</label>
                    <input type="date" name="fecha_inicio" value="<?php echo h($fecha_inicio); ?>" required>
                </div>
                <div class="col-3">
                    <label>Fecha fin</label>
                    <input type="date" name="fecha_fin" value="<?php echo h($fecha_fin); ?>" required>
                </div>
                <div class="col-3" style="display:flex;align-items:flex-end;">
                    <button type="submit" name="generar" value="1">Generar reporte</button>
                </div>
            </div>
        </form>
    </div>

    <?php if (isset($_POST['generar'])): ?>
        <div class="grid">
            <div class="card col-3 kpi"><div class="muted">Registros</div><div class="n"><?php echo (int)$totales['registros']; ?></div></div>
            <div class="card col-3 kpi"><div class="muted">Jornadas cerradas</div><div class="n"><?php echo (int)$totales['con_salida']; ?></div></div>
            <div class="card col-3 kpi"><div class="muted">Jornadas abiertas</div><div class="n"><?php echo (int)$totales['sin_salida']; ?></div></div>
            <div class="card col-3 kpi"><div class="muted">Horas registradas</div><div class="n"><?php echo number_format($totales['horas'] / 60, 2, ',', '.'); ?></div></div>
        </div>

        <div class="card">
            <div style="display:flex;justify-content:space-between;align-items:center;gap:12px;flex-wrap:wrap; margin-bottom:10px;">
                <div>
                    <div style="font-weight:700;">Desde <?php echo h($fecha_inicio); ?> hasta <?php echo h($fecha_fin); ?></div>
                    <div class="muted">La salida vacía indica que la jornada sigue abierta.</div>
                </div>
            </div>

            <table>
                <thead>
                    <tr>
                        <th>Cédula</th>
                        <th>Trabajador</th>
                        <th>Entrada</th>
                        <th>Salida</th>
                        <th>Estado</th>
                        <th>Horas</th>
                    </tr>
                </thead>
                <tbody>
                    <?php if (!$reportes): ?>
                        <tr><td colspan="6">No se encontraron registros en el rango indicado.</td></tr>
                    <?php else: ?>
                        <?php foreach ($reportes as $reporte): ?>
                            <tr>
                                <td><?php echo h($reporte['cedula']); ?></td>
                                <td><?php echo h(trim($reporte['apellido'] . ' ' . $reporte['nombre'])); ?></td>
                                <td><?php echo h($reporte['fecha_entrada']); ?></td>
                                <td><?php echo h($reporte['fecha_salida'] ?: '—'); ?></td>
                                <td>
                                    <span class="estado <?php echo !empty($reporte['fecha_salida']) ? 'ok' : 'warn'; ?>">
                                        <?php echo h($reporte['estado_jornada']); ?>
                                    </span>
                                </td>
                                <td>
                                    <?php
                                        echo !empty($reporte['fecha_salida'])
                                            ? number_format(max(0, (int)$reporte['minutos_trabajados']) / 60, 2, ',', '.')
                                            : '—';
                                    ?>
                                </td>
                            </tr>
                        <?php endforeach; ?>
                    <?php endif; ?>
                </tbody>
            </table>
        </div>
    <?php endif; ?>
</div>
</body>
</html>
