<?php
include 'config/db.php';

// Verificar si se recibió la clasificación
$clasificacion = isset($_GET['clasificacion']) ? $conexion->real_escape_string($_GET['clasificacion']) : '';

// Consulta para obtener las actividades que coincidan con la clasificación
$sql = "SELECT * FROM actividades_mejora WHERE clasificacion = '$clasificacion'";
$result = $conexion->query($sql);

if (!$result) {
    die("Error al ejecutar la consulta: " . $conexion->error);
}

// Inicializar variables para los filtros
$search = isset($_GET['search']) ? $conexion->real_escape_string($_GET['search']) : '';
$clasificacion = isset($_GET['clasificacion']) ? $conexion->real_escape_string($_GET['clasificacion']) : '';
$area = isset($_GET['area']) ? $conexion->real_escape_string($_GET['area']) : '';
$cargo = isset($_GET['cargo']) ? $conexion->real_escape_string($_GET['cargo']) : '';
$sexo = isset($_GET['sexo']) ? $conexion->real_escape_string($_GET['sexo']) : '';
$edad = isset($_GET['edad']) ? (int)$_GET['edad'] : '';
$factor_riesgo = isset($_GET['factor_riesgo']) ? $conexion->real_escape_string($_GET['factor_riesgo']) : '';

// Obtener enfermedades con sus porcentajes desde la base de datos
$enfermedades = [];
$sqlEnfermedades = "SELECT nombre_enfermedad, porcentaje FROM enfermedades";
$resultEnfermedades = $conexion->query($sqlEnfermedades);

if ($resultEnfermedades) {
    while ($row = $resultEnfermedades->fetch_assoc()) {
        $enfermedades[$row['nombre_enfermedad']] = $row['porcentaje'];
    }
} else {
    die("Error al consultar enfermedades: " . $conexion->error);
}

// Generar las condiciones dinámicas para calcular el porcentaje de salud restante
$condiciones = [];
foreach ($enfermedades as $nombre => $porcentaje) {
    $condiciones[] = "CASE WHEN f.criterio = '$nombre' AND f.respuesta = 'Sí' THEN $porcentaje ELSE 0 END";
}
$condicionesSQL = implode(' + ', $condiciones);

// Crear una subconsulta para calcular porcentajes y factores de riesgo
$subconsulta = "
    SELECT e.id, e.nombre, e.documento, e.edad, e.sexo, e.cargo, e.area, 
           e.fecha_ingreso, e.experiencia, e.valoraciones_medicas, e.observaciones,
           GROUP_CONCAT(CASE WHEN f.respuesta = 'Sí' THEN f.criterio END SEPARATOR ', ') AS factores_riesgo,
           GREATEST(100 - SUM($condicionesSQL), 0) AS porcentaje_riesgo
    FROM empleados e
    LEFT JOIN empleados_factores_riesgo f ON e.id = f.empleado_id
    GROUP BY e.id
";

// Construir condiciones dinámicas para filtrar los resultados de la subconsulta
$filtros = [];
if (!empty($search)) {
    $filtros[] = "(t.nombre LIKE '%$search%' OR t.documento LIKE '%$search%')";
}
if (!empty($clasificacion)) {
    if ($clasificacion === 'Sano') {
        $filtros[] = "t.porcentaje_riesgo >= 80";
    } elseif ($clasificacion === 'Seguimiento') {
        $filtros[] = "t.porcentaje_riesgo BETWEEN 50 AND 79";
    } elseif ($clasificacion === 'Susceptible') {
        $filtros[] = "t.porcentaje_riesgo BETWEEN 30 AND 49";
    } elseif ($clasificacion === 'Caso') {
        $filtros[] = "t.porcentaje_riesgo < 30";
    }
}
if (!empty($area)) {
    $filtros[] = "t.area = '$area'";
}
if (!empty($cargo)) {
    $filtros[] = "t.cargo = '$cargo'";
}
if (!empty($sexo)) {
    $filtros[] = "t.sexo = '$sexo'";
}
if (!empty($edad)) {
    $filtros[] = "t.edad = $edad";
}
if (!empty($factor_riesgo)) {
    $filtros[] = "t.factores_riesgo LIKE '%$factor_riesgo%'";
}

$filtrosSQL = !empty($filtros) ? 'WHERE ' . implode(' AND ', $filtros) : '';

// Consulta principal utilizando la subconsulta como base
$sql = "
    SELECT *
    FROM ($subconsulta) AS t
    $filtrosSQL
";
$result = $conexion->query($sql);

if (!$result) {
    die("Error al ejecutar la consulta: " . $conexion->error);
}

// Función para clasificar al empleado según el porcentaje invertido
function clasificarEmpleado($porcentaje) {
    if ($porcentaje >= 80) {
        return "Trabajador sano (intervención preventiva)";
    } elseif ($porcentaje >= 50) {
        return "En seguimiento (intervención preventiva)";
    } elseif ($porcentaje >= 30) {
        return "Susceptible (intervención preventiva)";
    } else {
        return "Caso confirmado (intervención correctiva)";
    }
}

$clasificacion = clasificarEmpleado($row['porcentaje_riesgo']); // Generar clasificación
$empleadoId = $row['id']; // Obtener el ID del empleado

// Actualizar la clasificación en la tabla empleados
$updateSQL = "UPDATE empleados SET clasificacion = ? WHERE id = ?";
$stmt = $conexion->prepare($updateSQL);
$stmt->bind_param("si", $clasificacion, $empleadoId);

if (!$stmt->execute()) {
    die("Error al actualizar clasificación: " . $stmt->error);
}

?>

<!DOCTYPE html>
<html lang="es">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Listar Empleados</title>
    <link rel="stylesheet" href="css/style.css">
    <style>
        body {
            font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;
            margin: 0;
            padding: 0;
            background-color: #f7f7f7;
        }

        .sidebar {
            width: 250px;
            background-color: #2c3e50;
            height: 100vh;
            position: fixed;
            top: 0;
            left: 0;
            color: white;
            padding: 20px 10px;
        }

        .sidebar h2 {
            text-align: center;
            font-size: 24px;
            color: #1abc9c;
            margin-bottom: 30px;
        }

        .sidebar ul {
            list-style: none;
            padding: 0;
        }

        .sidebar ul li {
            margin: 20px 0;
        }

        .sidebar ul li a {
            text-decoration: none;
            color: white;
            padding: 12px;
            display: block;
            font-size: 18px;
            transition: background-color 0.3s ease;
        }

        .sidebar ul li a:hover,
        .sidebar ul li a.active {
            background-color: #1abc9c;
        }

        .main-content {
            margin-left: 270px;
            padding: 30px;
        }

        .main-content h1 {
            font-size: 28px;
            color: #0984e3;
            margin-bottom: 20px;
        }

        .filter-container {
            background-color: #f9f9f9;
            border-radius: 12px;
            padding: 20px;
            box-shadow: 0px 4px 8px rgba(0, 0, 0, 0.1);
            width: 100%; /* Ajusta al ancho de la tabla */
            max-width: 1200px; /* Asegura el mismo ancho máximo de la tabla */
            margin: 20px auto;
        }

        .table-container {
            width: 100%; /* Igual al filtro */
            max-width: 1200px; /* Igual al filtro */
            margin: 0 auto; /* Centrar la tabla */
        }

        .filter-form {
            display: flex;
            flex-wrap: wrap;
            gap: 15px;
        }

        .filter-group {
            flex: 1 1 calc(33.33% - 10px);
        }

        .filter-input, .filter-select {
            width: 100%;
            padding: 12px 15px;
            font-size: 14px;
            border: 1px solid #ddd;
            border-radius: 8px;
            outline: none;
            box-shadow: inset 0px 2px 4px rgba(0, 0, 0, 0.05);
            transition: all 0.3s ease;
        }

        .filter-input:hover, .filter-select:hover,
        .filter-input:focus, .filter-select:focus {
            border-color: #1abc9c;
            box-shadow: 0px 0px 6px rgba(26, 188, 156, 0.4);
        }

        .filter-buttons {
            display: flex;
            justify-content: space-between;
            flex: 1 1 100%;
            gap: 10px;
            margin-top: 20px;
        }

        .filter-button {
            flex: 1 1 calc(50% - 5px);
            padding: 12px 20px;
            font-size: 16px;
            border: none;
            border-radius: 8px;
            cursor: pointer;
            color: white;
            text-align: center;
            transition: all 0.3s ease;
            text-decoration: none;
        }

        .filter-submit {
            background-color: #1abc9c;
        }

        .filter-submit:hover {
            background-color: #16a085;
        }

        .filter-reset {
            background-color: #e74c3c;
        }

        .filter-reset:hover {
            background-color: #c0392b;
        }

        table {
            width: 100%;
            border-collapse: collapse;
            margin-bottom: 20px;
        }

        table th, table td {
            text-align: center;
            padding: 10px;
            border: 1px solid #ddd;
        }

        table th {
            background-color: #2c3e50;
            color: white;
        }

        .btn {
            display: inline-block;
            padding: 8px 12px;
            margin: 4px;
            font-size: 14px;
            color: white;
            text-decoration: none;
            border-radius: 4px;
        }

        .btn-edit {
            background-color: #3498db;
        }

        .btn-edit:hover {
            background-color: #2980b9;
        }

        .btn-delete {
            background-color: #e74c3c;
        }

        .btn-delete:hover

        {
            background-color: #c0392b;
        }

        .btn-report {
            background-color: #2ecc71;
        }

        .btn-report:hover {
            background-color: #27ae60;
        }
        
        .btn-activities {
            background-color: #f39c12; /* Color naranja */
            color: white;
            text-decoration: none;
            padding: 8px 12px;
            border-radius: 4px;
            font-size: 14px;
            display: inline-block;
            margin: 4px;
            transition: background-color 0.3s ease;
        }

        .btn-activities:hover {
            background-color: #e67e22; /* Naranja más oscuro al pasar el mouse */
        }

        @media screen and (max-width: 768px) {
    .sidebar {
        width: 100%;
        height: auto;
        position: relative;
    }

    .sidebar ul {
        display: flex;
        flex-wrap: wrap;
        justify-content: center;
        padding: 0;
    }

    .sidebar ul li {
        margin: 10px;
    }

    .main-content {
        margin-left: 0;
        padding: 15px;
    }

    .filter-container, .table-container {
        max-width: 100%;
        padding: 10px;
    }

    .filter-form {
        flex-direction: column;
    }

    .filter-group {
        flex: 1 1 100%;
        margin-bottom: 10px;
    }

    .filter-buttons {
        flex-direction: column;
    }

    .filter-button {
        flex: 1 1 auto;
        margin-bottom: 10px;
    }

    table th, table td {
        font-size: 12px;
        padding: 8px;
    }

    .btn {
        font-size: 12px;
        padding: 6px 10px;
    }
}

@media screen and (max-width: 480px) {
    .sidebar ul {
        flex-direction: column;
    }

    table th, table td {
        font-size: 10px;
        padding: 6px;
    }

    .filter-container, .table-container {
        padding: 5px;
    }

    .btn {
        font-size: 10px;
        padding: 5px 8px;
    }
}

    </style>
</head>
<body>
    <div class="sidebar">
        <h2>PYP Conservación Auditiva</h2>
        <ul>
            <li><a href="index.php">Inicio</a></li>
            <li><a href="empleados.php">Registrar Empleado</a></li>
            <li><a href="listar_empleados.php" class="active">Gestionar Empleados</a></li>
        </ul>
    </div>
    <div class="main-content">
            <h1 style="text-align: center;">Gestionar Empleados</h1>

            <div class="filter-container">
        <form action="listar_empleados.php" method="GET" class="filter-form">
            <div class="filter-group">
                <input type="text" name="search" placeholder="🔍 Buscar por nombre o documento..." value="<?= htmlspecialchars($search) ?>" class="filter-input">
            </div>
            <div class="filter-group">
                <select name="clasificacion" class="filter-select">
                    <option value="">📋 Clasificación...</option>
                    <option value="Sano" <?= $clasificacion === 'Sano' ? 'selected' : '' ?>>Sano</option>
                    <option value="Seguimiento" <?= $clasificacion === 'Seguimiento' ? 'selected' : '' ?>>En Seguimiento</option>
                    <option value="Susceptible" <?= $clasificacion === 'Susceptible' ? 'selected' : '' ?>>Susceptible</option>
                    <option value="Caso" <?= $clasificacion === 'Caso' ? 'selected' : '' ?>>Caso Confirmado</option>
                </select>
            </div>
            <div class="filter-group">
                <select name="area" class="filter-select">
                    <option value="">🏢 Área...</option>
                    <option value="Producción" <?= $area === 'Producción' ? 'selected' : '' ?>>Producción</option>
                    <option value="Administración" <?= $area === 'Administración' ? 'selected' : '' ?>>Administración</option>
                    <option value="Calidad" <?= $area === 'Calidad' ? 'selected' : '' ?>>Calidad</option>
                </select>
            </div>
            <div class="filter-group">
                <select name="cargo" class="filter-select">
                    <option value="">💼 Cargo...</option>
                    <option value="Operario" <?= $cargo === 'Operario' ? 'selected' : '' ?>>Operario</option>
                    <option value="Supervisor" <?= $cargo === 'Supervisor' ? 'selected' : '' ?>>Supervisor</option>
                    <option value="Gerente" <?= $cargo === 'Gerente' ? 'selected' : '' ?>>Gerente</option>
                </select>
            </div>
            <div class="filter-group">
                <select name="sexo" class="filter-select">
                    <option value="">⚥ Sexo...</option>
                    <option value="Masculino" <?= $sexo === 'Masculino' ? 'selected' : '' ?>>Masculino</option>
                    <option value="Femenino" <?= $sexo === 'Femenino' ? 'selected' : '' ?>>Femenino</option>
                </select>
            </div>
            <div class="filter-group">
                <select name="edad" class="filter-select">
                    <option value="">🎂 Edad...</option>
                    <?php for ($i = 18; $i <= 65; $i++): ?>
                        <option value="<?= $i ?>" <?= $edad == $i ? 'selected' : '' ?>><?= $i ?> años</option>
                    <?php endfor; ?>
                </select>
            </div>
            <div class="filter-group">
                <select name="factor_riesgo" class="filter-select">
                    <option value="">⚠️ Factor de Riesgo...</option>
                    <?php foreach (array_keys($enfermedades) as $factor): ?>
                        <option value="<?= htmlspecialchars($factor) ?>" <?= $factor_riesgo === $factor ? 'selected' : '' ?>><?= htmlspecialchars($factor) ?></option>
                    <?php endforeach; ?>
                </select>
            </div>
            <div class="filter-buttons">
                <button type="submit" class="filter-button filter-submit">Buscar / Filtrar</button>
                <a href="listar_empleados.php" class="filter-button filter-reset">Borrar Filtros</a>
            </div>
        </form>
    </div>
        <table>
            <thead>
                <tr>
                    <th>ID</th>
                    <th>Nombre</th>
                    <th>Documento</th>
                    <th>Edad</th>
                    <th>Sexo</th>
                    <th>Cargo</th>
                    <th>Área</th>
                    <th>Fecha Ingreso</th>
                    <th>Experiencia (años)</th>
                    <th>Valoraciones Médicas</th>
                    <th>Observaciones</th>
                    <th>Factores de Riesgo</th>
                    <th>% Salud</th>
                    <th>Clasificación</th>
                    <th>Acciones</th>
                </tr>
            </thead>
            <tbody>
                <?php if ($result->num_rows > 0): ?>
                    <?php while ($row = $result->fetch_assoc()): ?>
    <?php
    // Calcular la clasificación del empleado
    $clasificacion = clasificarEmpleado($row['porcentaje_riesgo']); // Clasificación basada en el % Salud

    // Actualizar la clasificación en la base de datos si es necesario
    $empleadoId = $row['id']; // ID del empleado actual
    $updateSQL = "UPDATE empleados SET clasificacion = ? WHERE id = ?";
    $stmt = $conexion->prepare($updateSQL);
    $stmt->bind_param("si", $clasificacion, $empleadoId);
    if (!$stmt->execute()) {
        echo "<p style='color: red;'>Error al actualizar la clasificación del empleado con ID $empleadoId: " . $stmt->error . "</p>";
    }
    ?>
    <tr>
        <td><?= $row['id'] ?></td>
        <td><?= htmlspecialchars($row['nombre']) ?></td>
        <td><?= htmlspecialchars($row['documento']) ?></td>
        <td><?= htmlspecialchars($row['edad']) ?></td>
        <td><?= htmlspecialchars($row['sexo']) ?></td>
        <td><?= htmlspecialchars($row['cargo']) ?></td>
        <td><?= htmlspecialchars($row['area']) ?></td>
        <td><?= htmlspecialchars($row['fecha_ingreso']) ?></td>
        <td><?= htmlspecialchars($row['experiencia']) ?></td>
        <td><?= htmlspecialchars($row['valoraciones_medicas']) ?></td>
        <td><?= htmlspecialchars($row['observaciones']) ?></td>
        <td><?= htmlspecialchars($row['factores_riesgo'] ?: 'Ninguno') ?></td>
        <td><?= htmlspecialchars($row['porcentaje_riesgo']) ?>%</td>
        <td><?= $clasificacion ?></td>
        <td>
            <a href="editar_empleado.php?id=<?= $row['id'] ?>" class="btn btn-edit">Editar</a>
            <a href="eliminar_empleado.php?id=<?= $row['id'] ?>" class="btn btn-delete" onclick="return confirm('¿Estás seguro de eliminar este empleado?')">Eliminar</a>
            <a href="generar_pdf.php?id=<?= $row['id'] ?>" class="btn btn-report">Generar Informe</a>
            <a href="listar_actividades.php?clasificacion=<?= urlencode($clasificacion) ?>" class="btn btn-activities">Ver Actividades</a>
        </td>
    </tr>
<?php endwhile; ?>

                <?php else: ?>
                    <tr>
                        <td colspan="15">No se encontraron empleados.</td>
                    </tr>
                <?php endif; ?>
            </tbody>
        </table>
    </div>
</body>
</html>
