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

if ($_SERVER["REQUEST_METHOD"] == "POST") {
    
    $empleado = $_POST['empleado'];
    
    //$tipo = $_POST['tipo'];
    $horario = $_POST['horario'];
    $ubicacion = $_POST['ubicacion'];
    

/*$empleado = '19828';
$horario = '2024-09-27 05:00:00';
$ubicacion ='Oficina Lavatec';*/
$ultima_checada=null;
$checadap=null;
$lapso=0;
$status=null;
$status2=null;
$fecha=null;
$hora=null;
list($fecha,$hora)=explode(' ',$horario);

$sql = "SELECT * FROM checadas WHERE empleado='" . $empleado . "' ORDER BY horario DESC LIMIT 1";

// Ejecuta la consulta
$sql_valida = mysqli_query($connection, $sql);
if (mysqli_num_rows($sql_valida) > 0) {
    if ($sql_valida) {
        // Obtén los datos del resultado
        while ($data = mysqli_fetch_array($sql_valida)) {
            $ultima_checada = $data['horario'];
            $tipo = $data['tipo'];
            $checadap=$data['idchecada'];
            $lapso=$data['lapso'];
        }

        // Convierte las fechas en objetos DateTime
        $fecha_ultima_checada = new DateTime($ultima_checada);
        $fecha_horario_actual = new DateTime($horario);

        // Calcula la diferencia
        $diff = $fecha_ultima_checada->diff($fecha_horario_actual);

        // Convierte la diferencia a minutos
        $diferencia = ($diff->days * 24 * 60) + ($diff->h * 60) + $diff->i;

        if ($diferencia <= 5) {
            $status = 'alert';
            $status2='Ya existe una checada hace: ' . $diferencia . " minutos";
        } else {
            // Preparar la consulta de inserción
            $sqlx = "INSERT INTO checadas (empleado, tipo, horario, ubicacion,fecha,hora,checadaPadre,lapso) VALUES (?, ?, ?, ?, ?, ?,?,?)";
            $stmt = mysqli_prepare($connection, $sqlx);

            if ($stmt) {
                // Determina el nuevo tipo basado en el último tipo
                //$nuevo_tipo = ($tipo == 1) ? '2' : '1';
                if($tipo == 1) {
                    //$checadap=null;
                    // Crear el objeto DateTime a partir de $ultima_checada
                    $nuevaUltima = new DateTime($ultima_checada);
                    
                    // Sumar 5 horas
                    $nuevaUltima->modify('+5 hours');
                    
                    // Convertir a formato 'Y-m-d H:i:s'
                    $nuevaUltima = $nuevaUltima->format('Y-m-d H:i:s');
                    
                    // Comparar el horario con la nueva fecha
                    if($horario >= $nuevaUltima) {
                        $nuevo_tipo = 1;
                        $lapso=1;
                        $checadap=null;
                    } else {
                        $nuevo_tipo = 2;
                        //$checadap
                    }
                }else if($tipo==2){
                
                    $nuevaUltima = new DateTime($ultima_checada);
                    
                    // Sumar 5 horas
                    $nuevaUltima->modify('+8 hours');
                    
                    // Convertir a formato 'Y-m-d H:i:s'
                    $nuevaUltima = $nuevaUltima->format('Y-m-d H:i:s');
                    
                    // Comparar el horario con la nueva fecha
                    if($horario >= $nuevaUltima) {
                        $nuevo_tipo = 1;
                        $lapso=1;
                        $checadap=null;
                    } else {
                        $nuevo_tipo=1;
                        $checadap=null;
                        $lapso++;
                    }
                
                    
                
            }

                // Vincular parámetros
                //$ubicacion = 'default_ubicacion'; // Asegúrate de tener un valor de ubicación válido
                mysqli_stmt_bind_param($stmt, "ssssssss", $empleado, $nuevo_tipo, $horario, $ubicacion,$fecha,$hora,$checadap,$lapso);

                // Ejecutar la consulta
                if (mysqli_stmt_execute($stmt)) {
                    $status = 'success';
                    if($nuevo_tipo==1){
                        $status2='Ingreso registrado exitosamente.';
                    }else{
                        $status2='Salida registrada exitosamente.';
                    }
                } else {
                    $status = 'failure';
                    $status2='Error al insertar la checada: ' . mysqli_error($connection);
                }
            } else {
                $status='error';
                $status2='Error en la preparación de la consulta: ' . mysqli_error($connection);
            }
        }
    } else {
        // Maneja errores en la consulta
        $status='error';
        $status2="Error en la consulta: " . mysqli_error($connection);
    }
} else {
    $lapso++;
    // Preparar la consulta de inserción
            $sqlx = "INSERT INTO checadas (empleado, tipo, horario, ubicacion,fecha,hora,lapso) VALUES (?, ?, ?, ?, ?, ?,?)";
            $stmt = mysqli_prepare($connection, $sqlx);

            if ($stmt) {
                // Determina el nuevo tipo basado en el último tipo
                $nuevo_tipo = 1;
                $checadap=null;
                

                // Vincular parámetros
                //$ubicacion = 'default_ubicacion'; // Asegúrate de tener un valor de ubicación válido
                mysqli_stmt_bind_param($stmt, "sssssss", $empleado, $nuevo_tipo, $horario, $ubicacion,$fecha,$hora,$lapso);

                // Ejecutar la consulta
                if (mysqli_stmt_execute($stmt)) {
                    $status = 'success';
                    if($nuevo_tipo==1){
                        $status2='Ingreso registrado exitosamente.';
                    }else{
                        $status2='Salida registrada exitosamente.';
                    }
                } else {
                    $status = 'failure';
                    $status2='Error al insertar la checada: ' . mysqli_error($connection);
                }
            } else {
                $status='error';
                $status2='Error en la preparación de la consulta: ' . mysqli_error($connection);
            }
}

}


$mensaje = array(
    'respuesta' => $status,
    'mensaje'=>$status2
);

echo json_encode($mensaje);

?>