<?php
    include "./conexion.php";

 
    /*$anio = mysqli_real_escape_string($connection, $_POST['anio']);
    $periodo = mysqli_real_escape_string($connection, $_POST['periodo']);
    $ubicacion = mysqli_real_escape_string($connection, $_POST['ubicacion']);
    $supervisor = mysqli_real_escape_string($connection, $_POST['supervisor']);
    $lugar = mysqli_real_escape_string($connection, $_POST['lugar']);
    $lugarz = mysqli_real_escape_string($connection, $_POST['lugarz']);*/

    $anio = isset($_POST['anio']) && !empty($_POST['anio']) ? mysqli_real_escape_string($connection, $_POST['anio']) : null;
    $periodo = isset($_POST['periodo']) && !empty($_POST['periodo']) ? mysqli_real_escape_string($connection, $_POST['periodo']) : null;
    $ubicacion = isset($_POST['ubicacion']) && !empty($_POST['ubicacion']) ? mysqli_real_escape_string($connection, $_POST['ubicacion']) : null;
    $supervisor = isset($_POST['supervisor']) && !empty($_POST['supervisor']) ? mysqli_real_escape_string($connection, $_POST['supervisor']) : null;
    $lugar = isset($_POST['lugar']) && !empty($_POST['lugar']) ? mysqli_real_escape_string($connection, $_POST['lugar']) : null;
    $lugarz = isset($_POST['lugarz']) && !empty($_POST['lugarz']) ? mysqli_real_escape_string($connection, $_POST['lugarz']) : null;

    
    $status=null;
    $inicio=null;
    $final=null;
    $hrs=null;
    $json_faltas=array();
    $v=null;
    $s=null;
    $d=null;
    $l=null;
    $m=null;
    $mi=null;
    $j=null;
     
    $consulta=null;

    

    $status.="
    <style>
    /* Estilos específicos para la tabla con clase 'tabla-asistencia' */
.tabla-asistencia {
            font-family: Arial, sans-serif;
            font-size:12pt;
            border-collapse: collapse;
            width: 100%;
            margin-top: 10px;
        }

        .tabla-asistencia th, .tabla-asistencia td {
            border: 1px solid #dddddd;
            text-align: left;
            padding: 8px;
            font-size:8pt;
        }

        .tabla-asistencia th {
            background-color: #6fb6fc;
            color: white;
            text-transform: uppercase;
        }

        .tabla-asistencia td {
            background-color: #white;
        }

        .tabla-asistencia .descanso {
            text-align: center;    
            background-color: #c1c2c3;
            
        }

        .tabla-asistencia .sin-checada {
            background-color: #fa5534;
            color:white;
            text-align: center;
        }

        .tabla-asistencia .checada-ok {
            background-color: #95faaf;
            text-align: center;
        }
        .tabla-asistencia .checada-warning {
            background-color: #fa9112;
            text-align: center;
            font-weight: bold;
            color:white;
        }
        .paginacion {
            display: flex;
            justify-content: right;
            align-items: center;
            margin-top: 5px;
        }

        .paginacion a, .paginacion strong {
            margin: 0 5px;
            padding: 8px 12px;
            text-decoration: none;
            border: 1px solid #ccc;
            border-radius: 4px;
            color: white;
        }

        .paginacion a:hover {
            background-color: #79e6fc;
        }

        .btn-paginacion {
            background-color: #007bff;
            color: white;
            border: none;
            cursor: pointer;
            padding: 8px 12px;
            text-decoration: none;
            border-radius: 4px;
        }

        .btn-paginacion:hover {
            background-color: #79e6fc;
        }

        .pagina-actual {
            background-color: #199be5;
            color: white;
            padding: 8px 12px;
            border-radius: 4px;
        }
            input[type='text'] {
            width: 100%;
            box-sizing: border-box; /* Para incluir padding y border en el ancho total */
        }

    </style>
    ";

    if($lugar=="0"){
        $consulta="SELECT * FROM movs WHERE anio='" . $anio . "' AND sem='" . $periodo . "' AND ubicacion='" . $ubicacion . "' AND supervisor='" . $supervisor . "'";
    } else if($lugar=="x"){
        //$consulta="SELECT * FROM movs WHERE anio='" . $anio . "' AND sem='" . $periodo . "' AND ubicacion='" . $ubicacion . "' AND supervisor='" . $supervisor . "' and lugTrab like '%".$lugarz."%'";
        $consulta="SELECT * FROM movs WHERE anio='" . $anio . "' AND sem='" . $periodo . "' and lugTrab like '%".$lugarz."%'";
        
    } else{
        $consulta="SELECT * FROM movs WHERE anio='" . $anio . "' AND sem='" . $periodo . "' AND ubicacion='" . $ubicacion . "' AND supervisor='" . $supervisor . "' AND lugTrab='" . $lugar . "'";
    }

// Definir el número de registros por página
    $registros_por_pagina = 20;

    // Obtener la página actual de la solicitud POST
$pagina_actual = isset($_POST['pagina']) ? (int)$_POST['pagina'] : 1;
$inicio_registro = ($pagina_actual - 1) * $registros_por_pagina;

    $sql_semana= "select * from periodos where semana='".$periodo."'";
    $sqls = mysqli_query($connection, $sql_semana);
    $resultx=mysqli_num_rows($sqls);
    if($resultx>0){
        while($data=mysqli_fetch_array($sqls)){
            $inicio=$data['fechaInicial'];
            $final=$data['fechaFinal'];
            $v=date('d-m-Y',strtotime($inicio));
            $s=date('d-m-Y', strtotime($v . ' +1 day'));
            $d=date('d-m-Y', strtotime($s . ' +1 day'));;
            $l=date('d-m-Y', strtotime($d . ' +1 day'));;
            $m=date('d-m-Y', strtotime($l . ' +1 day'));;
            $mi=date('d-m-Y', strtotime($m . ' +1 day'));;
            $j=date('d-m-Y', strtotime($mi . ' +1 day'));;
        }
    }

    function convierte($dia){
        $diax=null;

        switch($dia){
            case 'V': $diax='0'; break;
            case 'S': $diax='1'; break;
            case 'D': $diax='2'; break;
            case 'L': $diax='3'; break;
            case 'M': $diax='4'; break;
            case 'Mi': $diax='5'; break;
            case 'J': $diax='6'; break;
            default: $diax='9'; break;
        }
        
        return $diax;
    }

    function checadas($iniciox,$conection,$empleado,$d1,$d2,$d3,$d4){
        $campos=null;
        $fecha= new DateTime($iniciox);        
        $hrx='00:00:00';
        $hrs=null;
        for($i=0;$i<7;$i++){

            if($i==0){
                $campos.=''.valores($iniciox,$conection,$empleado,$d1,$d2,$d3,$d4,$i).'';
            }else{
                $fecha->modify('+1 day');
                $fecha2=$fecha->format('Y-m-d');
                $campos.=''.valores($fecha2,$conection,$empleado,$d1,$d2,$d3,$d4,$i).'';
                
            }
            
        }

        //$campos.='</tr>';
        $hrx='00:00:00';

        return $campos;
    }

    function valores($inicio, $conection, $empleado, $d1, $d2, $d3, $d4, $d) {
        $valor = '';
    
        // Consulta para obtener los registros de checadas
        $sql = "SELECT * FROM datos_checadas WHERE fecha = '$inicio' AND empleado = '$empleado'";
        $sqlx = mysqli_query($conection, $sql);
    
        // Verificar si la consulta fue exitosa
        if ($sqlx) {
            $resultx = mysqli_num_rows($sqlx);
    
            // Si hay registros, se procesan las checadas
            if ($resultx > 0) {
                //$valor.='<td class="checada-ok">';
                $diasDescanso = [convierte($d1), convierte($d2), convierte($d3), convierte($d4)];

                if (in_array($d, $diasDescanso)) {
                    $valor.='<td class="checada-warning">';
                    $desc=0;
                    while ($data = mysqli_fetch_array($sqlx)) {
                        $entrada = $data['horaEntrada'];
                        $salida = $data['horaSalida'];
        
                        if($desc==0){
                            $valor.= 'Descanso<br>';
                        }
                            
                            // Si no hay hora de salida, solo mostrar la entrada
                            if ($salida === null) {
                                $valor .= $entrada . '<br>';
                            } else {
                                // Mostrar la hora de entrada y salida
                                $valor .= $entrada . " a " . $salida . '<br>';
                            }
                        
                        /*// Si no hay hora de salida, solo mostrar la entrada
                        if ($salida === null) {
                            $valor .= $entrada . '<br>';
                        } else {
                            // Mostrar la hora de entrada y salida
                            $valor .= $entrada . " a " . $salida . '<br>';
                        }*/
                        $desc++;
                    }
                } else{
                    $valor.='<td class="checada-ok">';
                    while ($data = mysqli_fetch_array($sqlx)) {
                        $entrada = $data['horaEntrada'];
                        $salida = $data['horaSalida'];
        
                            // Si no hay hora de salida, solo mostrar la entrada
                            if ($salida === null) {
                                $valor .= $entrada . '<br>';
                            } else {
                                // Mostrar la hora de entrada y salida
                                $valor .= $entrada . " a " . $salida . '<br>';
                            }
                        
                        /*// Si no hay hora de salida, solo mostrar la entrada
                        if ($salida === null) {
                            $valor .= $entrada . '<br>';
                        } else {
                            // Mostrar la hora de entrada y salida
                            $valor .= $entrada . " a " . $salida . '<br>';
                        }*/
                    }
                }

                while ($data = mysqli_fetch_array($sqlx)) {
                    $entrada = $data['horaEntrada'];
                    $salida = $data['horaSalida'];
    
                    
                        $valor.='<td class="checada-warning">';
                        $valor.= 'Descanso<br>';
                        // Si no hay hora de salida, solo mostrar la entrada
                        if ($salida === null) {
                            $valor .= $entrada . '<br>';
                        } else {
                            // Mostrar la hora de entrada y salida
                            $valor .= $entrada . " a " . $salida . '<br>';
                        }
                    
                    /*// Si no hay hora de salida, solo mostrar la entrada
                    if ($salida === null) {
                        $valor .= $entrada . '<br>';
                    } else {
                        // Mostrar la hora de entrada y salida
                        $valor .= $entrada . " a " . $salida . '<br>';
                    }*/
                }
                $valor.='</td>';
            } else {
                // Si no hay registros, verificar los días de descanso
                $diasDescanso = [convierte($d1), convierte($d2), convierte($d3), convierte($d4)];
    
                // Comprobar si el día es de descanso
                if (in_array($d, $diasDescanso)) {
                    $valor.= '<td class="descanso">Descanso</td>';
                } else {
                    $valor.= '<td class="sin-checada">No Checada</td>'; // Sin checada
                    
                }
                
            }
        } else {
            // Error en la consulta SQL
            $valor.= 'Error en la consulta';
        }
    
        return $valor;
    }
    
    
    // Contar el total de registros para paginación
    $total_resultados = mysqli_query($connection, $consulta);
    $total_registros = mysqli_num_rows($total_resultados);

    // Modificar la consulta para obtener solo los registros necesarios
    $consulta .= " LIMIT $inicio_registro, $registros_por_pagina";
    
    $sqls = mysqli_query($connection, $consulta);
    $resultx = mysqli_num_rows($sqls);
    $x=1;
    if ($resultx > 0) {
        // Estructura de la tabla
        $status .= '<table class="tabla-asistencia">
        <tr>
        <th rowspan="3"></th>
        <th colspan="5"></th>
        <th colspan="7" style="text-align:center;">Asistencia</th>
        <th></th>
        </tr>
        <tr>
        <th rowspan="2" style="width:50px;">#Emp.</th>
        <th rowspan="2">Nombre</th>
        <th rowspan="2">Lugar de Trabajo</th>
        <th rowspan="2">Salario</th>
        <th rowspan="2">Turno</th>
        <th style="text-align:center;">V</th>
        <th style="text-align:center;">S</th>
        <th style="text-align:center;">D</th>
        <th style="text-align:center;">L</th>
        <th style="text-align:center;">M</th>
        <th style="text-align:center;">Mi</th>
        <th style="text-align:center;">J</th>
        <th rowspan="2">Comentarios</th>
        </tr>
        <tr>
        <th style="text-align:center;">'.$v.'</th>
        <th style="text-align:center;">'.$s.'</th>
        <th style="text-align:center;">'.$d.'</th>
        <th style="text-align:center;">'.$l.'</th>
        <th style="text-align:center;">'.$m.'</th>
        <th style="text-align:center;">'.$mi.'</th>
        <th style="text-align:center;">'.$j.'</th>
        
        </tr>';

        $indice = 0; // Para manejar el índice de los registros en la página actual
        while ($data = mysqli_fetch_array($sqls)) {
            $consecutivo = $inicio_registro + $indice + 1;
            $status .= '<tr>
            <td><strong>'.$consecutivo.'</strong></td>
            <td>' . $data['nemp'] . '</td>
            <td>' . $data['nombre'] . '</td>
            <td>' . $data['lugTrab'] . '</td>
            <td style="text-align:right;">$ ' . number_format($data['salario'], 2) . '</td>
            <td>' . $data['turno'] . '</td>
            ' . checadas($inicio, $connection, $data['nemp'], $data['D1'], $data['D2'], $data['D3'], $data['D4']) . '
            <td><input id="comentario" type="text" style="text-align:left;" value="' . $data['comentario'] . '"/></td>
            </tr>';

            $indice++;
        }
        $status .= '</table>';

        // Calcular el número total de páginas
        $total_paginas = ceil($total_registros / $registros_por_pagina);

        // Enlaces de paginación con botones de inicio y final
        $status .= '<div class="paginacion">';

        // Botón de "Inicio"
        if ($pagina_actual > 1) {
            $status .= '<a href="#" onclick="cargarPagina(1)" class="btn-paginacion"><i class="fa-solid fa-backward-fast"></i></a> ';
        }

        // Botón de página anterior
        /*if ($pagina_actual > 1) {
            $pagina_anterior = $pagina_actual - 1;
            $status .= '<a href="#" onclick="cargarPagina(' . $pagina_anterior . ')" class="btn-paginacion">&laquo; Anterior</a> ';
        }*/

        // Mostrar un rango de páginas alrededor de la página actual
        $rango_paginas = 2; // Define cuántas páginas mostrar antes y después de la actual
        $inicio_rango = max(1, $pagina_actual - $rango_paginas);
        $fin_rango = min($total_paginas, $pagina_actual + $rango_paginas);

        for ($i = $inicio_rango; $i <= $fin_rango; $i++) {
            if ($i == $pagina_actual) {
                $status .= '<strong class="pagina-actual">' . $i . '</strong> '; // Página actual
            } else {
                $status .= '<a href="#" onclick="cargarPagina(' . $i . ')" class="btn-paginacion">' . $i . '</a> ';
            }
        }

        // Botón de página siguiente
        /*if ($pagina_actual < $total_paginas) {
            $pagina_siguiente = $pagina_actual + 1;
            $status .= '<a href="#" onclick="cargarPagina(' . $pagina_siguiente . ')" class="btn-paginacion">Siguiente &raquo;</a> ';
        }*/

        // Botón de "Final"
        if ($pagina_actual < $total_paginas) {
            $status .= '<a href="#" onclick="cargarPagina(' . $total_paginas . ')" class="btn-paginacion"><i class="fa-solid fa-forward-fast"></i></a> ';
        }

        $status .= '</div>';
    }


$status.="
<script>
function cargarPagina(pagina) {
    const anio = document.getElementById('anio').value; // Asegúrate de que estos elementos existen
    const periodo = document.getElementById('periodo').value;
    const ubicacion = document.getElementById('ubicacion').value;
    const supervisor = document.getElementById('supervisor').value;
    const lugar = document.getElementById('lugar').value;
    
    var lugarz= null;

    if (lugar=='x'){
        lugarz= document.getElementById('lugarz').value;;
    } else{
        lugarz= 0;
    }

    const formData = new FormData();
    formData.append('anio', anio);
    formData.append('periodo', periodo);
    formData.append('ubicacion', ubicacion);
    formData.append('supervisor', supervisor);
    formData.append('lugar', lugar);
    formData.append('lugarz', lugarz);
    formData.append('pagina', pagina);
    

    fetch('reporte3.php', {
        method: 'POST',
        body: formData,
    })
    .then(response => response.json())
    .then(data => {
        document.getElementById('checadas').innerHTML = data.respuesta; // Asegúrate de que este ID coincida con tu HTML
    })
    .catch(error => console.error('Error:', error));
}
</script>
";

// Mensaje de respuesta
$mensaje = array(
    'respuesta' => $status
);

echo json_encode($mensaje);