SSL
Inicio de Recorrido
string PHP_URL = "<https://e468-181-199-38-5.ngrok-free.app/appReportes/src/model/inicioRecorrido.php>"; // Cambia esta URL a donde esté alojado tu script PHP
default
{
state_entry()
{
llSay(0, "Object ready.");
}
collision_start(integer num_detected)
{
// Iterar sobre todos los objetos detectados
for (integer i = 0; i < num_detected; i++)
{
// Verificar si el objeto detectado no es un avatar
if (!(llDetectedType(i) & AGENT))
{
// Obtener el nombre del objeto detectado
string object_name = llDetectedName(i);
// Asumimos que el nombre del objeto tiene el formato "Nombre Apellido"
list name_parts = llParseString2List(object_name, [" "], []);
if (llGetListLength(name_parts) == 2)
{
string nombre_conductor = llList2String(name_parts, 0);
string apellido_conductor = llList2String(name_parts, 1);
string url = PHP_URL + "?nombre=" + llEscapeURL(nombre_conductor) + "&apellido=" + llEscapeURL(apellido_conductor);
llHTTPRequest(url, [], "");
}
else
{
llSay(0, "El nombre del objeto debe tener el formato 'Nombre Apellido'.");
}
}
}
}
http_response(key request_id, integer status, list metadata, string body)
{
// Manejar la respuesta del servidor
if (status == 200)
{
llSay(0, "Respuesta del servidor: " + body);
}
else
{
llSay(0, "Error al contactar el servidor.");
}
}
}
Impacto con Cono
string PHP_URL = "<https://e468-181-199-38-5.ngrok-free.app/appReportes/src/model/insertarCono.php>"; // Cambia esta URL a donde esté alojado tu script PHP
default
{
state_entry()
{
llSay(0, "Object ready.");
}
collision_start(integer num_detected)
{
// Iterar sobre todos los objetos detectados
for (integer i = 0; i < num_detected; i++)
{
// Verificar si el objeto detectado no es un avatar
if (!(llDetectedType(i) & AGENT))
{
// Obtener el nombre del objeto detectado
string object_name = llDetectedName(i);
// Asumimos que el nombre del objeto tiene el formato "Nombre Apellido"
list name_parts = llParseString2List(object_name, [" "], []);
if (llGetListLength(name_parts) == 2)
{
string nombre_conductor = llList2String(name_parts, 0);
string apellido_conductor = llList2String(name_parts, 1);
string url = PHP_URL + "?nombre=" + llEscapeURL(nombre_conductor) + "&apellido=" + llEscapeURL(apellido_conductor);
llHTTPRequest(url, [], "");
}
else
{
llSay(0, "El nombre del objeto debe tener el formato 'Nombre Apellido'.");
}
}
}
}
http_response(key request_id, integer status, list metadata, string body)
{
// Manejar la respuesta del servidor
if (status == 200)
{
llSay(0, "Respuesta del servidor: " + body);
}
else
{
llSay(0, "Error al contactar el servidor.");
}
}
}
Servicio PHP
Inicio de Recorrido
<?php
$servername = "localhost";
$username = "root";
$password = "";
$dbname = "appconduccion";
// Crear conexión
$conn = new mysqli($servername, $username, $password, $dbname);
// Verificar conexión
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}
// Obtener datos desde el GET o POST
$nombre = $_REQUEST['nombre'];
$apellido = $_REQUEST['apellido'];
// Verificar si el nombre y apellido existen en la tabla conductores
$sql = "SELECT cedula FROM conductores WHERE nombre = ? AND apellido = ?";
$stmt = $conn->prepare($sql);
$stmt->bind_param("ss", $nombre, $apellido);
$stmt->execute();
$result = $stmt->get_result();
if ($result->num_rows > 0) {
$row = $result->fetch_assoc();
$cedula = $row['cedula'];
// Verificar si ya existe un reporte para este conductor
$sql = "SELECT * FROM maestro_reportes WHERE cedula_conductor = ?";
$stmt = $conn->prepare($sql);
$stmt->bind_param("s", $cedula);
$stmt->execute();
$result = $stmt->get_result();
if ($result->num_rows == 0) {
// Insertar nuevo reporte en la tabla maestro_reportes
$fecha_inicio = date('Y-m-d H:i:s');
$puntuacion = 100;
$sql = "INSERT INTO maestro_reportes (cedula_conductor, fecha_inicio, puntuacion) VALUES (?, ?, ?)";
$stmt = $conn->prepare($sql);
$stmt->bind_param("ssi", $cedula, $fecha_inicio, $puntuacion);
if ($stmt->execute()) {
echo "Reporte insertado correctamente.";
} else {
echo "Error insertando el reporte: " . $conn->error;
}
} else {
echo "Ya existe un reporte para este conductor.";
}
} else {
echo "Conductor no registrado.";
}
$stmt->close();
$conn->close();
?>
Impacto de Cono
<?php
$servername = "localhost";
$username = "root";
$password = "";
$dbname = "appconduccion";
// Crear conexión
$conn = new mysqli($servername, $username, $password, $dbname);
// Verificar conexión
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}
// Obtener datos desde el GET o POST
$nombre = $_REQUEST['nombre'];
$apellido = $_REQUEST['apellido'];
// Verificar si el nombre y apellido existen en la tabla conductores
$sql = "SELECT cedula FROM conductores WHERE nombre = ? AND apellido = ?";
$stmt = $conn->prepare($sql);
$stmt->bind_param("ss", $nombre, $apellido);
$stmt->execute();
$result = $stmt->get_result();
if ($result->num_rows > 0) {
$row = $result->fetch_assoc();
$cedula = $row['cedula'];
// Verificar si ya existe un reporte para este conductor
$sql = "SELECT * FROM maestro_reportes WHERE cedula_conductor = ?";
$stmt = $conn->prepare($sql);
$stmt->bind_param("s", $cedula);
$stmt->execute();
$result = $stmt->get_result();
if ($result->num_rows == 0) {
// Insertar nuevo reporte en la tabla maestro_reportes
$fecha_inicio = date('Y-m-d H:i:s');
$puntuacion = 100;
$sql = "INSERT INTO maestro_reportes (cedula_conductor, fecha_inicio, puntuacion) VALUES (?, ?, ?)";
$stmt = $conn->prepare($sql);
$stmt->bind_param("ssi", $cedula, $fecha_inicio, $puntuacion);
if ($stmt->execute()) {
$id_reporte = $stmt->insert_id;
echo "Reporte insertado correctamente.";
} else {
echo "Error insertando el reporte: " . $conn->error;
}
} else {
$row = $result->fetch_assoc();
$id_reporte = $row['id_reporte'];
// Disminuir la puntuación en maestro_reportes
$sql = "UPDATE maestro_reportes SET puntuacion = puntuacion - 1 WHERE id_reporte = ?";
$stmt = $conn->prepare($sql);
$stmt->bind_param("i", $id_reporte);
$stmt->execute();
}
// Verificar si ya existe un detalle para esta infracción y este reporte
$sql = "SELECT * FROM detalle_reporte WHERE id_reporte = ? AND infraccion = 'Impacto con el Cono'";
$stmt = $conn->prepare($sql);
$stmt->bind_param("i", $id_reporte);
$stmt->execute();
$result = $stmt->get_result();
if ($result->num_rows == 0) {
// Insertar nuevo detalle en la tabla detalle_reporte
$cantidad = 1;
$ubicacion = "zona de aprendizaje";
$sql = "INSERT INTO detalle_reporte (id_reporte, infraccion, cantidad, ubicacion) VALUES (?, 'Impacto con el Cono', ?, ?)";
$stmt = $conn->prepare($sql);
$stmt->bind_param("iis", $id_reporte, $cantidad, $ubicacion);
if ($stmt->execute()) {
echo "Detalle insertado correctamente.";
} else {
echo "Error insertando el detalle: " . $conn->error;
}
} else {
// Actualizar el detalle existente incrementando la cantidad
$sql = "UPDATE detalle_reporte SET cantidad = cantidad + 1 WHERE id_reporte = ? AND infraccion = 'Impacto con el Cono'";
$stmt = $conn->prepare($sql);
$stmt->bind_param("i", $id_reporte);
if ($stmt->execute()) {
echo "Detalle actualizado correctamente.";
} else {
echo "Error actualizando el detalle: " . $conn->error;
}
}
} else {
echo "Conductor no registrado.";
}
$stmt->close();
$conn->close();
?>