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

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

$database = new Database();
$conn = $database->getConnection();

// Obtener información del empleado logueado
$empleadoId = $_SESSION['user']['codempleado'];
$empleadoInfo = null;
$horarioActual = null;
$estadoHorario = 'fuera_horario';
$mensajeHorario = '';
$accesoPermitido = false;

try {
    // Obtener información del empleado
    $stmt = $conn->prepare("
        SELECT e.*, th.tipohorario 
        FROM templeado e 
        LEFT JOIN tipohorario th ON e.codtipohorario = th.codtipohorario 
        WHERE e.codempleado = ?
    ");
    $stmt->execute([$empleadoId]);
    $empleadoInfo = $stmt->fetch(PDO::FETCH_ASSOC);

    if ($empleadoInfo) {
        // Obtener el día actual (1=Lunes, 2=Martes, ..., 7=Domingo) en Lima, Perú
        $diaActual = date('N'); // 1 (lunes) a 7 (domingo)
        
        // Obtener la hora actual en Lima, Perú
        $horaActual = date('H:i:s');
        
        // Debug zona horaria
        error_log("DEBUG DASHBOARD - Zona horaria: " . date_default_timezone_get());
        error_log("DEBUG DASHBOARD - Fecha completa: " . date('Y-m-d H:i:s'));
        error_log("DEBUG DASHBOARD - Día de la semana: " . $diaActual . " (1=Lunes, 7=Domingo)");
        
        // Verificar si el empleado tiene horario para hoy
        $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 adicional
        error_log("DEBUG DASHBOARD - codtipohorario: " . $empleadoInfo['codtipohorario']);
        error_log("DEBUG DASHBOARD - diaActual: " . $diaActual);
        error_log("DEBUG DASHBOARD - horarioActual: " . print_r($horarioActual, true));

        if ($horarioActual) {
            // Verificar si está dentro del horario
            $horaInicio = $horarioActual['horainicio'];
            $horaFin = $horarioActual['horafinal'];
            
            // Debug: Log para verificar los valores
            error_log("DEBUG HORARIO - Hora actual: " . $horaActual);
            error_log("DEBUG HORARIO - Hora inicio: " . $horaInicio);
            error_log("DEBUG HORARIO - Hora fin: " . $horaFin);
            
            // Convertir a timestamp para comparación más precisa
            $timestampActual = strtotime($horaActual);
            $timestampInicio = strtotime($horaInicio);
            $timestampFin = strtotime($horaFin);
            
            error_log("DEBUG HORARIO - Timestamp actual: " . $timestampActual);
            error_log("DEBUG HORARIO - Timestamp inicio: " . $timestampInicio);
            error_log("DEBUG HORARIO - Timestamp fin: " . $timestampFin);
            
            if ($timestampActual >= $timestampInicio && $timestampActual <= $timestampFin) {
                $estadoHorario = 'dentro_horario';
                $mensajeHorario = "Está dentro de su horario laboral";
                $accesoPermitido = true;
                error_log("DEBUG HORARIO - DENTRO DEL HORARIO");
            } elseif ($timestampActual < $timestampInicio) {
                $estadoHorario = 'antes_horario';
                $mensajeHorario = "Su horario comienza a las " . date('H:i', strtotime($horaInicio));
                $accesoPermitido = false;
                error_log("DEBUG HORARIO - ANTES DEL HORARIO");
            } else {
                $estadoHorario = 'despues_horario';
                $mensajeHorario = "Su horario terminó a las " . date('H:i', strtotime($horarioActual['horafinal']));
                $accesoPermitido = false;
                error_log("DEBUG HORARIO - DESPUÉS DEL HORARIO");
            }
        } else {
            $estadoHorario = 'sin_horario';
            $mensajeHorario = "No tiene horario programado para hoy";
            $accesoPermitido = false;
            error_log("DEBUG HORARIO - SIN HORARIO");
        }
    }
} catch(PDOException $e) {
    $_SESSION['error'] = "Error al obtener información del horario: " . $e->getMessage();
    $accesoPermitido = false;
}

// Si no tiene acceso permitido, redirigir a página de fuera de horario
if (!$accesoPermitido) {
    $_SESSION['horario_info'] = [
        'empleado' => $empleadoInfo,
        'horario' => $horarioActual,
        'estado' => $estadoHorario,
        'mensaje' => $mensajeHorario
    ];
    header("Location: fuera_horario.php");
    exit();
}

// Obtener información de la empresa del usuario logueado
$empresaInfo = null;
$stats = [];
try {
    // Obtener información de la empresa del usuario
    $stmt = $conn->prepare("
        SELECT emp.*, t.codempresa 
        FROM templeado t
        INNER JOIN tempresa emp ON t.codempresa = emp.codempresa
        WHERE t.codempleado = ?
    ");
    $stmt->execute([$empleadoId]);
    $empresaInfo = $stmt->fetch(PDO::FETCH_ASSOC);
    
    if ($empresaInfo) {
        $codempresa = $empresaInfo['codempresa'];
        
        // Total de empleados de la empresa
        $stmt = $conn->prepare("SELECT COUNT(*) as total FROM templeado WHERE codempresa = ?");
        $stmt->execute([$codempresa]);
        $stats['total_empleados'] = $stmt->fetchColumn();
        
        // Empleados activos hoy (dentro de su horario) de la empresa
        $stmt = $conn->prepare("
            SELECT COUNT(DISTINCT e.codempleado) as activos
            FROM templeado e
            INNER JOIN thorario h ON e.codtipohorario = h.codtipohorario
            INNER JOIN tdiasemana d ON h.coddiasemana = d.coddiasemana
            WHERE e.codempresa = ? 
            AND d.coddiasemana = ? 
            AND ? BETWEEN h.horainicio AND h.horafinal
        ");
        $stmt->execute([$codempresa, date('N'), date('H:i:s')]);
        $stats['empleados_activos'] = $stmt->fetchColumn();
        
        // Tipos de horario utilizados por la empresa
        $stmt = $conn->prepare("
            SELECT COUNT(DISTINCT e.codtipohorario) as total 
            FROM templeado e 
            WHERE e.codempresa = ?
        ");
        $stmt->execute([$codempresa]);
        $stats['tipos_horario_utilizados'] = $stmt->fetchColumn();
        
        // Empleados creados en los últimos 30 días
        $stmt = $conn->prepare("
            SELECT COUNT(*) as total 
            FROM templeado 
            WHERE codempresa = ? 
            AND fechaDigitacion >= DATE_SUB(NOW(), INTERVAL 30 DAY)
        ");
        $stmt->execute([$codempresa]);
        $stats['empleados_recientes'] = $stmt->fetchColumn();
    }
    
} catch(PDOException $e) {
    $_SESSION['error'] = "Error al obtener información de la empresa: " . $e->getMessage();
    $stats = [
        'total_empleados' => 0,
        'empleados_activos' => 0,
        'tipos_horario_utilizados' => 0,
        'empleados_recientes' => 0
    ];
}
?>

<div class="col-md-10 p-4">
    <!-- Header limpio -->
    <div class="row mb-4">
        <div class="col-12">
            <div class="d-flex justify-content-between align-items-center">
                <div>
                    <h2 class="mb-1">Dashboard</h2>
                    <p class="text-muted mb-0">Bienvenido, <?php echo htmlspecialchars($empleadoInfo['nombres'] . ' ' . $empleadoInfo['apellidoPaterno']); ?></p>
                    <?php if ($empresaInfo): ?>
                        <p class="text-muted mb-0">
                            <i class="fas fa-building me-1"></i>
                            <?php echo htmlspecialchars($empresaInfo['nomempresa']); ?>
                        </p>
                    <?php endif; ?>
                </div>
                <div class="text-end">
                    <div class="badge bg-success fs-6 px-3 py-2">
                        <i class="fas fa-check-circle me-2"></i>En horario laboral
                    </div>
                    <div class="text-muted small mt-1 hora-actual">
                        <?php 
                        // Formatear fecha y hora en español para Lima, Perú
                        $fechaActual = new DateTime('now', new DateTimeZone('America/Lima'));
                        $diasSemana = [
                            1 => 'Lunes', 2 => 'Martes', 3 => 'Miércoles', 4 => 'Jueves',
                            5 => 'Viernes', 6 => 'Sábado', 7 => 'Domingo'
                        ];
                        $meses = [
                            1 => 'enero', 2 => 'febrero', 3 => 'marzo', 4 => 'abril',
                            5 => 'mayo', 6 => 'junio', 7 => 'julio', 8 => 'agosto',
                            9 => 'septiembre', 10 => 'octubre', 11 => 'noviembre', 12 => 'diciembre'
                        ];
                        $diaSemana = $diasSemana[$fechaActual->format('N')];
                        $mes = $meses[$fechaActual->format('n')];
                        $dia = $fechaActual->format('j');
                        $año = $fechaActual->format('Y');
                        $hora = $fechaActual->format('H:i');
                        
                        echo $hora . ' - ' . $diaSemana . ', ' . $dia . ' de ' . $mes . ' de ' . $año;
                        ?>
                    </div>
                    <div class="text-muted small">
                        <i class="fas fa-map-marker-alt me-1"></i>Lima, Perú
                    </div>
                </div>
            </div>
        </div>
    </div>

    <?php if ($empresaInfo): ?>
        <!-- Estadísticas de la Empresa -->
        <div class="row mb-4">
            <div class="col-md-3">
                <div class="card border-0 shadow-sm">
                    <div class="card-body text-center">
                        <div class="text-primary mb-2">
                            <i class="fas fa-users fa-2x"></i>
                        </div>
                        <h3 class="card-title mb-1"><?php echo $stats['total_empleados']; ?></h3>
                        <p class="card-text text-muted">Empleados de la Empresa</p>
                    </div>
                </div>
            </div>
            
            <div class="col-md-3">
                <div class="card border-0 shadow-sm">
                    <div class="card-body text-center">
                        <div class="text-success mb-2">
                            <i class="fas fa-user-check fa-2x"></i>
                        </div>
                        <h3 class="card-title mb-1"><?php echo $stats['empleados_activos']; ?></h3>
                        <p class="card-text text-muted">Empleados Activos Hoy</p>
                    </div>
                </div>
            </div>
            
            <div class="col-md-3">
                <div class="card border-0 shadow-sm">
                    <div class="card-body text-center">
                        <div class="text-info mb-2">
                            <i class="fas fa-clock fa-2x"></i>
                        </div>
                        <h3 class="card-title mb-1"><?php echo $stats['tipos_horario_utilizados']; ?></h3>
                        <p class="card-text text-muted">Tipos de Horario</p>
                    </div>
                </div>
            </div>
            
            <div class="col-md-3">
                <div class="card border-0 shadow-sm">
                    <div class="card-body text-center">
                        <div class="text-warning mb-2">
                            <i class="fas fa-user-plus fa-2x"></i>
                        </div>
                        <h3 class="card-title mb-1"><?php echo $stats['empleados_recientes']; ?></h3>
                        <p class="card-text text-muted">Nuevos Empleados (30 días)</p>
                    </div>
                </div>
            </div>
        </div>
        
        <!-- Información de la Empresa -->
        <div class="row mb-4">
            <div class="col-12">
                <div class="card border-0 shadow-sm">
                    <div class="card-body">
                        <h5 class="card-title mb-3">
                            <i class="fas fa-building text-primary"></i> Información de la Empresa
                        </h5>
                        <div class="row">
                            <div class="col-md-6">
                                <p><strong>Nombre:</strong> <?php echo htmlspecialchars($empresaInfo['nomempresa']); ?></p>
                                <?php if (!empty($empresaInfo['ruc'])): ?>
                                    <p><strong>RUC:</strong> <?php echo htmlspecialchars($empresaInfo['ruc']); ?></p>
                                <?php endif; ?>
                                <?php if (!empty($empresaInfo['direccion'])): ?>
                                    <p><strong>Dirección:</strong> <?php echo htmlspecialchars($empresaInfo['direccion']); ?></p>
                                <?php endif; ?>
                            </div>
                            <div class="col-md-6">
                                <?php if (!empty($empresaInfo['telefono'])): ?>
                                    <p><strong>Teléfono:</strong> <?php echo htmlspecialchars($empresaInfo['telefono']); ?></p>
                                <?php endif; ?>
                                <?php if (!empty($empresaInfo['email'])): ?>
                                    <p><strong>Email:</strong> <?php echo htmlspecialchars($empresaInfo['email']); ?></p>
                                <?php endif; ?>
                                <?php if (!empty($empresaInfo['logo'])): ?>
                                    <div class="mt-2">
                                        <img src="<?php echo htmlspecialchars($empresaInfo['logo']); ?>" alt="Logo de la empresa" style="max-height: 60px;" class="img-fluid">
                                    </div>
                                <?php endif; ?>
                            </div>
                        </div>
                    </div>
                </div>
            </div>
        </div>
    <?php endif; ?>
    
    <!-- Acciones Rápidas -->
    <div class="row">
        <div class="col-12">
            <div class="card border-0 shadow-sm">
                <div class="card-body">
                    <h5 class="card-title mb-3">
                        <i class="fas fa-tools text-primary"></i> Acciones Rápidas
                    </h5>
                    <div class="row g-3">
                        <?php if ($tieneAccesoUsuario): ?>
                        <div class="col-md-3">
                            <a href="empleados.php" class="btn btn-outline-primary w-100 h-100 d-flex flex-column align-items-center justify-content-center py-3">
                                <i class="fas fa-users fa-2x mb-2"></i>
                                <span>Gestionar Empleados</span>
                            </a>
                        </div>
                        <?php endif; ?>
                        
                        
                        
                        <?php if ($tieneAccesoCobranza): ?>
                        <div class="col-md-3">
                            <a href="cobrarmoviles.php" class="btn btn-outline-danger w-100 h-100 d-flex flex-column align-items-center justify-content-center py-3">
                                <i class="fas fa-mobile-alt fa-2x mb-2"></i>
                                <span>Cobranza Móviles</span>
                            </a>
                        </div>
                        <?php endif; ?>
                        
                        
                        <?php if ($tieneAccesoTrabajador): ?>
                        <div class="col-md-3">
                            <a href="trabajadores.php" class="btn btn-outline-dark w-100 h-100 d-flex flex-column align-items-center justify-content-center py-3">
                                <i class="fas fa-hard-hat fa-2x mb-2"></i>
                                <span>Gestionar Trabajadores</span>
                            </a>
                        </div>
                        <?php endif; ?>
                    </div>
                </div>
            </div>
        </div>
    </div>
</div>

<script>
// Actualizar la hora cada minuto y verificar acceso
setInterval(function() {
    // Verificar si aún está en horario antes de recargar
    fetch('verificar_horario.php')
        .then(response => response.json())
        .then(data => {
            if (!data.acceso_permitido) {
                window.location.href = 'fuera_horario.php';
            } else {
                location.reload();
            }
        })
        .catch(() => {
            location.reload();
        });
}, 60000); // 60 segundos

// Mostrar hora actual en tiempo real (Lima, Perú)
function actualizarHora() {
    const ahora = new Date();
    // Convertir a hora de Lima, Perú (UTC-5)
    const lima = new Date(ahora.toLocaleString("en-US", {timeZone: "America/Lima"}));
    const hora = lima.toLocaleTimeString('es-ES', { hour: '2-digit', minute: '2-digit' });
    
    // Actualizar título
    document.title = `Dashboard - ${hora} (Lima)`;
    
    // Actualizar la hora en la interfaz si existe el elemento
    const elementoHora = document.querySelector('.hora-actual');
    if (elementoHora) {
        const diasSemana = ['Domingo', 'Lunes', 'Martes', 'Miércoles', 'Jueves', 'Viernes', 'Sábado'];
        const meses = ['enero', 'febrero', 'marzo', 'abril', 'mayo', 'junio', 'julio', 'agosto', 'septiembre', 'octubre', 'noviembre', 'diciembre'];
        
        const diaSemana = diasSemana[lima.getDay()];
        const dia = lima.getDate();
        const mes = meses[lima.getMonth()];
        const año = lima.getFullYear();
        
        elementoHora.textContent = `${hora} - ${diaSemana}, ${dia} de ${mes} de ${año}`;
    }
}

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

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


