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

    $anio= $_POST['anio'];
    $periodo = $_POST['periodo'];
    $ubicacion = $_POST['ubicacion'];
    $supervisor = $_POST['supervisor'];
    $lugar = $_POST['lugar'];
    $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;
     

    //$status.='['.$anio.'-'.$periodo.'-'.$ubicacion.'-'.$supervisor.'-'.$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.='<td></td>';
        $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">';
                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>';
                    }
                }
                $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
                    $json_faltas['empleado']=$empleado;
                    $json_faltas['Fecha']=date('Ymd',strtotime($inicio));
                    $json_faltas['Tipo']='7';
                    $file_path = 'data'.date('YmdHis').'.json';
                    // Leer el archivo JSON existente si ya tiene datos
                    
                    if (file_exists($file_path)) {
                        // Leer y decodificar el contenido existente
                        $json_data = file_get_contents($file_path);
                        $faltas_array = json_decode($json_data, true);

                        // Si el archivo está vacío o no tiene formato válido, inicializa como array
                        if (!is_array($faltas_array)) {
                            $faltas_array = array();
                        }
                    } else {
                        // Si no existe el archivo, crea un array vacío
                        $faltas_array = array();
                    }

                    // Agregar el nuevo dato al array
                    $faltas_array[] = $json_faltas;

                    // Convertir el array actualizado a JSON y guardarlo en el archivo
                    $json_faltasx = json_encode($faltas_array, JSON_PRETTY_PRINT);
                    file_put_contents($file_path, $json_faltasx);
                }
                
            }
        } else {
            // Error en la consulta SQL
            $valor.= 'Error en la consulta';
        }
    
        return $valor;
    }
    

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

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

        .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: #dadbdd;
        }

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

        .tabla-asistencia .checada-ok {
            background-color: #95faaf;
            text-align: center;
        }
    </style>
";

if ($lugar == '0') {
    // Si lugar no está seleccionado, mostrar todos los empleados del supervisor
    $sql_supervisor = "SELECT * FROM movs WHERE anio='" . $anio . "' AND sem='" . $periodo . "' AND ubicacion='" . $ubicacion . "' AND supervisor='" . $supervisor . "'";
    
    // Contar el total de registros para paginación
    $total_resultados = mysqli_query($connection, $sql_supervisor);
    $total_registros = mysqli_num_rows($total_resultados);

    // Modificar la consulta para obtener solo los registros necesarios
    $sql_supervisor .= " LIMIT $inicio_registro, $registros_por_pagina";
    
    $sqls = mysqli_query($connection, $sql_supervisor);
    $resultx = mysqli_num_rows($sqls);
    if ($resultx > 0) {
        // Estructura de la tabla
        $status .= '<table class="tabla-asistencia">
        <tr>
        <th colspan="5"></th>
        <th colspan="7" style="text-align:center;">Asistencia</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>
        </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>';

        
        while ($data = mysqli_fetch_array($sqls)) {
            $status .= '<tr>
            <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']) . '
            </tr>';
        }
        $status .= '</table>';

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

        // Enlaces de paginación
        $status .= '<div class="paginacion">';
        for ($i = 1; $i <= $total_paginas; $i++) {
            if ($i == $pagina_actual) {
                $status .= '<strong>' . $i . '</strong> '; // Página actual
            } else {
                $status .= '<a href="#" onclick="cargarPagina(' . $i . ')">' . $i . '</a> ';
            }
        }
        $status .= '</div>';
    }

} else {
    // Si lugar está seleccionado, mostrar todos los empleados del lugar
    $sql_lugar = "SELECT * FROM movs WHERE anio='" . $anio . "' AND sem='" . $periodo . "' AND ubicacion='" . $ubicacion . "' AND supervisor='" . $supervisor . "' AND lugTrab='" . $lugar . "'";
    
    // Contar el total de registros para paginación
    $total_resultados = mysqli_query($connection, $sql_lugar);
    $total_registros = mysqli_num_rows($total_resultados);

    // Modificar la consulta para obtener solo los registros necesarios
    $sql_lugar .= " LIMIT $inicio_registro, $registros_por_pagina";
    
    $sqls = mysqli_query($connection, $sql_lugar);
    $resultx = mysqli_num_rows($sqls);
    if ($resultx > 0) {
        // Estructura de la tabla
        $status .= '<table class="tabla-asistencia">
        <tr>
        <th colspan="5"></th>
        <th colspan="7" style="text-align:center;">Asistencia</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>
        </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>';
        
        while ($data = mysqli_fetch_array($sqls)) {
            $status .= '<tr>
            <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']) . '
            </tr>';
        }
        $status .= '</table>';

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

        // Enlaces de paginación
        $status .= '<div class="paginacion">';
        for ($i = 1; $i <= $total_paginas; $i++) {
            if ($i == $pagina_actual) {
                $status .= '<strong>' . $i . '</strong> '; // Página actual
            } else {
                $status .= '<a href="#" onclick="cargarPagina(' . $i . ')">' . $i . '</a> ';
            }
        }
        $status .= '</div>';
        
    }
}
$status.="
<script>
function cargarPagina(pagina) {
    const formData = new FormData();
    formData.append('anio', anio); // Define `anio` como una variable global o pásalo según sea necesario
    formData.append('periodo', periodo);
    formData.append('ubicacion', ubicacion);
    formData.append('supervisor', supervisor);
    formData.append('lugar', lugar);
    formData.append('pagina', pagina);

    fetch('reporte3.php', {
        method: 'POST',
        body: formData,
    })
    .then(response => response.json())
    .then(data => {
        document.getElementById('resultado').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);