<?php
include_once 'includes/header.php';
include_once 'config/database.php';

// Configurar zona horaria de Lima, Perú
date_default_timezone_set('America/Lima');

// Verificar si hay información de horario en la sesión
if (!isset($_SESSION['horario_info'])) {
    header("Location: dashboard.php");
    exit();
}

$horarioInfo = $_SESSION['horario_info'];
$empleadoInfo = $horarioInfo['empleado'];
$estadoHorario = $horarioInfo['estado'];
$mensajeHorario = $horarioInfo['mensaje'];

// Obtener el horario actual directamente de la base de datos para asegurar datos correctos
$horarioActual = null;
if ($empleadoInfo) {
    try {
        $database = new Database();
        $conn = $database->getConnection();
        
        $diaActual = date('N');
        $stmt = $conn->prepare("
            SELECT h.*, d.diasemana, d.coddiasemana
            FROM thorario h
            LEFT JOIN tdiasemana d ON h.coddiasemana = d.coddiasemana
            WHERE h.codtipohorario = ? AND d.coddiasemana = ?
        ");
        $stmt->execute([$empleadoInfo['codtipohorario'], $diaActual]);
        $horarioActual = $stmt->fetch(PDO::FETCH_ASSOC);
        
        // Debug: Log para verificar el horario obtenido
        error_log("DEBUG FUERA_HORARIO - Horario obtenido: " . print_r($horarioActual, true));
        
    } catch(PDOException $e) {
        error_log("ERROR obteniendo horario en fuera_horario.php: " . $e->getMessage());
    }
}

// Obtener el día actual y hora de Lima, Perú
$diaActual = date('N');
$horaActual = date('H:i:s');
$nombreDia = [
    1 => 'Lunes',
    2 => 'Martes', 
    3 => 'Miércoles',
    4 => 'Jueves',
    5 => 'Viernes',
    6 => 'Sábado',
    7 => 'Domingo'
][$diaActual];
?>

<div class="col-md-10 p-4">
    <div class="row justify-content-center">
        <div class="col-md-8">
            <div class="card border-danger">
                <div class="card-header bg-danger text-white text-center">
                    <h3><i class="fas fa-clock"></i> Acceso Restringido</h3>
                </div>
                <div class="card-body text-center">
                    <div class="mb-4">
                        <i class="fas fa-exclamation-triangle fa-5x text-warning mb-3"></i>
                        <h4 class="text-danger">Fuera del Horario Laboral</h4>
                        <p class="lead">Estimado/a <strong><?php echo htmlspecialchars($empleadoInfo['nombres'] . ' ' . $empleadoInfo['apellidoPaterno']); ?></strong></p>
                    </div>

                    <div class="alert alert-warning">
                        <h5><i class="fas fa-info-circle"></i> Información de su Horario</h5>
                        <p><strong>Día actual:</strong> <?php echo $nombreDia . ', ' . date('d/m/Y'); ?></p>
                        <p><strong>Hora actual (Lima, Perú):</strong> <span id="hora-lima"><?php echo date('H:i:s'); ?></span></p>
                        <p><strong>Tipo de horario:</strong> <?php echo htmlspecialchars($empleadoInfo['tipohorario']); ?></p>
                        
                        <?php if ($horarioActual): ?>
                            <p><strong>Horario de hoy:</strong> <?php echo date('H:i', strtotime($horarioActual['horainicio'])) . ' - ' . date('H:i', strtotime($horarioActual['horafinal'])); ?></p>
                        <?php endif; ?>
                    </div>

                    <div class="alert alert-danger">
                        <h5><i class="fas fa-ban"></i> <?php echo $mensajeHorario; ?></h5>
                        <p class="mb-0">Solo puede acceder al sistema durante su horario laboral establecido.</p>
                    </div>

                    <div class="row mt-4">
                        <div class="col-md-6">
                            <button class="btn btn-outline-primary w-100" onclick="verificarHorario()">
                                <i class="fas fa-sync-alt"></i> Verificar Horario
                            </button>
                        </div>
                        <div class="col-md-6">
                            <a href="logout.php" class="btn btn-outline-danger w-100">
                                <i class="fas fa-sign-out-alt"></i> Cerrar Sesión
                            </a>
                        </div>
                    </div>

                    <div class="mt-4">
                        <small class="text-muted">
                            <i class="fas fa-info-circle"></i> 
                            El sistema verificará automáticamente su horario cada minuto.
                        </small>
                    </div>
                </div>
            </div>

            <!-- Horario Semanal -->
            <div class="card mt-4">
                <div class="card-header">
                    <h5><i class="fas fa-calendar-week"></i> Su Horario Semanal</h5>
                </div>
                <div class="card-body">
                    <div class="table-responsive">
                        <table class="table table-striped">
                            <thead>
                                <tr>
                                    <th>Día</th>
                                    <th>Horario</th>
                                    <th>Estado</th>
                                </tr>
                            </thead>
                            <tbody>
                                <?php
                                try {
                                    $database = new Database();
                                    $conn = $database->getConnection();
                                    
                                    $stmt = $conn->prepare("
                                        SELECT h.*, d.diasemana, d.coddiasemana
                                        FROM thorario h
                                        LEFT JOIN tdiasemana d ON h.coddiasemana = d.coddiasemana
                                        WHERE h.codtipohorario = ?
                                        ORDER BY d.coddiasemana
                                    ");
                                    $stmt->execute([$empleadoInfo['codtipohorario']]);
                                    $horariosSemana = $stmt->fetchAll(PDO::FETCH_ASSOC);
                                    
                                    $diasSemana = [
                                        1 => 'Lunes',
                                        2 => 'Martes', 
                                        3 => 'Miércoles',
                                        4 => 'Jueves',
                                        5 => 'Viernes',
                                        6 => 'Sábado',
                                        7 => 'Domingo'
                                    ];
                                    
                                    foreach ($diasSemana as $numDia => $nombreDia) {
                                        $horarioDia = null;
                                        foreach ($horariosSemana as $horario) {
                                            if ($horario['coddiasemana'] == $numDia) {
                                                $horarioDia = $horario;
                                                break;
                                            }
                                        }
                                        
                                        $esHoy = $numDia == $diaActual;
                                        $estadoDia = '';
                                        $claseEstado = '';
                                        
                                        if ($horarioDia) {
                                            $horaActual = date('H:i:s'); // Hora actual de Lima, Perú
                                            $horaInicio = $horarioDia['horainicio'];
                                            $horaFin = $horarioDia['horafinal'];
                                            
                                            if ($esHoy) {
                                                if ($horaActual >= $horaInicio && $horaActual <= $horaFin) {
                                                    $estadoDia = 'Activo';
                                                    $claseEstado = 'success';
                                                } elseif ($horaActual < $horaInicio) {
                                                    $estadoDia = 'Pendiente';
                                                    $claseEstado = 'warning';
                                                } else {
                                                    $estadoDia = 'Terminado';
                                                    $claseEstado = 'info';
                                                }
                                            } else {
                                                $estadoDia = 'Programado';
                                                $claseEstado = 'secondary';
                                            }
                                        } else {
                                            $estadoDia = 'Sin horario';
                                            $claseEstado = 'light';
                                        }
                                        ?>
                                        <tr class="<?php echo $esHoy ? 'table-primary' : ''; ?>">
                                            <td>
                                                <strong><?php echo $nombreDia; ?></strong>
                                                <?php if ($esHoy): ?>
                                                    <span class="badge bg-primary">Hoy</span>
                                                <?php endif; ?>
                                            </td>
                                            <td>
                                                <?php if ($horarioDia): ?>
                                                    <?php echo date('H:i', strtotime($horarioDia['horainicio'])) . ' - ' . date('H:i', strtotime($horarioDia['horafinal'])); ?>
                                                <?php else: ?>
                                                    <span class="text-muted">Sin horario</span>
                                                <?php endif; ?>
                                            </td>
                                            <td>
                                                <span class="badge bg-<?php echo $claseEstado; ?>">
                                                    <?php echo $estadoDia; ?>
                                                </span>
                                            </td>
                                        </tr>
                                        <?php
                                    }
                                } catch(PDOException $e) {
                                    echo '<tr><td colspan="3" class="text-center text-danger">Error al cargar el horario semanal</td></tr>';
                                }
                                ?>
                            </tbody>
                        </table>
                    </div>
                </div>
            </div>
        </div>
    </div>
</div>

<script>
// Función para verificar horario manualmente
function verificarHorario() {
    fetch('verificar_horario.php')
        .then(response => response.json())
        .then(data => {
            if (data.acceso_permitido) {
                window.location.href = 'dashboard.php';
            } else {
                const horaLima = new Date().toLocaleString('es-PE', {
                    timeZone: 'America/Lima',
                    hour: '2-digit',
                    minute: '2-digit',
                    second: '2-digit',
                    hour12: false
                });
                alert('Aún está fuera de su horario laboral. Hora actual (Lima, Perú): ' + horaLima);
            }
        })
        .catch(error => {
            console.error('Error:', error);
            alert('Error al verificar el horario. Intente nuevamente.');
        });
}

// Verificar horario automáticamente cada minuto
setInterval(function() {
    fetch('verificar_horario.php')
        .then(response => response.json())
        .then(data => {
            if (data.acceso_permitido) {
                window.location.href = 'dashboard.php';
            }
        })
        .catch(error => {
            console.error('Error en verificación automática:', error);
        });
}, 60000); // 60 segundos

// Mostrar hora actual en tiempo real (Lima, Perú)
function actualizarHora() {
    const ahora = new Date();
    const horaLima = ahora.toLocaleString('es-PE', {
        timeZone: 'America/Lima',
        hour: '2-digit',
        minute: '2-digit',
        second: '2-digit',
        hour12: false
    });
    
    // Actualizar el título de la página
    document.title = `Fuera de Horario - ${horaLima} (Lima, Perú)`;
    
    // Actualizar la hora en la interfaz
    const elementoHora = document.getElementById('hora-lima');
    if (elementoHora) {
        elementoHora.textContent = horaLima;
    }
}

setInterval(actualizarHora, 1000);
actualizarHora();
</script>

<?php
include_once 'includes/footer.php';
?>
