<?php


error_reporting(E_ALL);
ini_set('display_errors', '1');


date_default_timezone_set('America/Mexico_City');


// Conexión a la base de datos
$db_server = '162.240.165.127';
$db_name = 'blocator_monitoreo';            
$db_user = 'blocator_rastreo';
$db_password = 'VD@12Y3v9s[==';


$conn_site = mysqli_connect($db_server, $db_user, $db_password, $db_name);

if($conn_site){
	echo 'Conexión Existosa';
}

$conn_site->set_charset("utf8");




// Función principal modificada para ser dinámica
function fetchAndSaveData($config, $conn_site) {

	
	// URL base de la API
$api_url = "http://blackpoint.hopto.org/api/api.php";

// Parámetros de la API
$api_user = "user"; // Nombre del usuario de la API
$api_version = "1.0"; // Versión de la API
$api_key = "00B13F9DFE01C8C65CC2D8B96626C848"; // Clave de acceso a la API

// Parámetros de la solicitud
$imeis = "*"; // IMEIs separados por punto y coma

// Construcción del comando
$cmd = "OBJECT_GET_LOCATIONS,$imeis";

// Construcción de la URL completa con los parámetros
$url = "$api_url?api=$api_user&ver=$api_version&key=$api_key&cmd=$cmd";

// Inicializar cURL
$ch = curl_init();

// Configuración de cURL
curl_setopt($ch, CURLOPT_URL, $url); // URL de la API
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); // Retornar respuesta como string
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); // Deshabilitar verificación SSL (si es necesario)

// Ejecutar la solicitud
$response = curl_exec($ch);

// Manejo de errores en cURL
if (curl_errno($ch)) {
    echo "Error en cURL: " . curl_error($ch);
    curl_close($ch);
    exit;
}

// Cerrar cURL
curl_close($ch);

// Decodificar la respuesta JSON
$response_data = json_decode($response, true);




// Decodificar la respuesta JSON en un array asociativo
$data = json_decode($response, true);


//	$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);



		$idgpsedb = $config['idgpse'];
		
		//file_put_contents($data_File, $response);
		
        // Insertar en la base de datos
        $response_db = $conn_site->real_escape_string($response);
        
        // Procesar los datos como antes...
		
		$sql2="INSERT INTO Recibir_Datos_GPS (datos) VALUES ('$response_db')";																	
		$result2=mysqli_query($conn_site,$sql2);


		$fecha= date ('Y-m-d');
		$hora=date("H:i:s"); 
	

		
		
		$data = json_decode($response, true);
		
		
// Verificar si la respuesta es válida
if ($data === null) {
    echo "Error al decodificar la respuesta JSON.";
    exit;
}
		
		
		
		
		
        $n=0;
		


// Procesar cada objeto en la respuesta
foreach ($data as $imei => $vehicle) {
	
	
	$id_vehiculo = $imei;
	$name = $vehicle['name'];
	$gpsDate = $vehicle['dt_tracker'];
	$date =  $vehicle['dt_server'];
	$latitude = $vehicle['lat'];
	$longitude = $vehicle['lng'];
	$altitud = $vehicle['altitude'];
	$speed = $vehicle['speed'];
	$protocolo = $vehicle['protocol'];
	$orientation = $vehicle['angle'];
			
			
		
	echo '$id_vehiculo '.$id_vehiculo.'<br>';	


	
    // Extraer datos de la sección "params"
    if (isset($vehicle['params'])) {
		
		$bateria1 =  $vehicle['params']['batteryLevel'];
		$odometroDia =  $vehicle['params']['distance'];
        //echo "Movimiento: " . ($vehicle['params']['motion'] ? 'Sí' : 'No') . "".'<br>';
       
		$movimiento =  $vehicle['params']['motion'];
		$odometer = $vehicle['params']['totalDistance'];
		$ignition = $vehicle['params']['ignition'] ? 1 : 0; // Convertir true/false a 1/0;
    }

    
	$localizacion = $vehicle['loc_valid'];
	
	
    echo "-----------------------------------------".'<br>';


		$plates=""; $vin="";
		$sql3="SELECT plates,vin FROM Unidades_GPS_Cliente where id_vehiculo = '$id_vehiculo' ";
		$result3=mysqli_query($conn_site,$sql3);
		$encontre=mysqli_num_rows($result3);
		if($encontre > 0 ){
			$registro3=mysqli_fetch_array($result3);
			$plates= "".$registro3['plates'].""; 
			$vin= "".$registro3['vin'].""; 
		}


		


		$ids=0;
		$sql3="SELECT ids FROM Unidades_GPS_Cliente where id_vehiculo = '$id_vehiculo' and ids is not null and autorizado = 1 ";
		$result3=mysqli_query($conn_site,$sql3);
		$encontre=mysqli_num_rows($result3);
		if($encontre > 0 ){
			$registro3=mysqli_fetch_array($result3);
			$ids= "".$registro3['ids'].""; 
		}

		echo 'IDS '.$ids.'<br>';

		$sqldgps="SELECT ID FROM Datos_GPS where id_vehiculo = '$id_vehiculo' and gpsDate = '$gpsDate' ";
		$resultdgps=mysqli_query($conn_site,$sqldgps);
		$encontredgps=mysqli_num_rows($resultdgps);
			
		echo 'encontredgps '.$encontredgps.'<br>';	
			
		if($encontredgps==0){
			
			$sql2="INSERT INTO Datos_GPS  (
			ids,idgps,id_vehiculo,date,name,ignition,latitude,longitude,speed,odometer,gpsDate,altitud,bateria1,odometroDia,plates,vin, 
			fecha,hora,status) VALUES 
			(
			'$ids','$idgpsedb','$id_vehiculo','$date','$name','$ignition','$latitude','$longitude','$speed','$odometer','$gpsDate','$altitud','$bateria1','$odometroDia','$plates','$vin',
			'$fecha','$hora','0')";																	
			$result2=mysqli_query($conn_site,$sql2);
		
			echo $sql2.'<br>';
		

			if($result2){
				echo 'Registro Añadido'.'<br>';	
			}else{
				echo 'Registro No Añadido'.'<br>';
			}

		}
		
		
		$sqld="SELECT ID FROM Unidades_GPS_Cliente where idgps = $idgpsedb and id_vehiculo = $id_vehiculo  ";
		$resultd=mysqli_query($conn_site,$sqld);
		$encontre=mysqli_num_rows($resultd);
			
		if($encontre == 0 ){
			$sql2="INSERT INTO Unidades_GPS_Cliente  (idgps,name,id_vehiculo,autorizado) VALUES 
				('$idgpsedb','$name','$id_vehiculo','$encontre')";																	
			$result2=mysqli_query($conn_site,$sql2);
		}
		
		
		
		
		
	}


		echo json_encode(["status" => "success", "message" => "Datos actualizados"]);
		
		
        // (Mantener tu lógica de procesamiento de vehículos aquí)
		
		
		
		$sql="REPLACE INTO Datos_GPS_Resumen (id_vehiculo, max_id)
		SELECT gps.id_vehiculo, MAX(gps.ID) AS max_id
		FROM Datos_GPS gps
		INNER JOIN 
			Unidades_GPS_Cliente unidades
			ON gps.id_vehiculo = unidades.id_vehiculo
		where unidades.autorizado = 1 and unidades.idgps = $idgpsedb
		GROUP BY id_vehiculo;";
		$result=mysqli_query($conn_site,$sql);

		
        
    

}
		
		


// Obtener todas las configuraciones activas tipo = 1
$sql = "SELECT * FROM GPS WHERE status = 1 and tipo = 3 ORDER BY ID";
$result = mysqli_query($conn_site, $sql);

while ($config = mysqli_fetch_assoc($result)) {
    try {
        echo "<h3>Procesando configuración ID: {$config['ID']}</h3>";
        
		echo 'ID '.$config['ID'];
		
		
        // Crear estructura de configuración
        $apiConfig = [
            'idgpse' => $config['ID'],
			'data_url' => $config['data_url'],
            'api_key' => $config['client_secret_token'],
			'api_user' => $config['username_token'],
			
        ];

        // Ejecutar el proceso para cada configuración
        if (fetchAndSaveData($apiConfig, $conn_site)) {
            echo "<p style='color:green'>Configuración ID: {$config['ID']} procesada exitosamente</p>";
        } else {
            echo "<p style='color:red'>Error procesando configuración ID: {$config['ID']}</p>";
        }
        
    } catch (Exception $e) {
        error_log("Error crítico en ID: {$config['ID']} - " . $e->getMessage());
        continue; // Continuar con la siguiente configuración
    }
}




/*

// Cerrar conexión
mysqli_close($conn_site);

echo "<h2>Proceso completo</h2>";

*/


?>