<?php

include_once "common.php";
include_once "encriptar.php";

date_default_timezone_set('America/Mexico_City');

// Configuración global de archivos (sin constantes fijas)
$DATA_FILE_PREFIX = "https://guardian.blocator.com.mx/geolocaliza/panel/data/data_";     // Crear directorio 'data'

// Conexión a la base de datos
$db_server = '162.240.165.127';
$db_name = 'blocator_monitoreo';            
$db_user = 'blocator_rastreo';
$db_password = 'V,D@12Y3v9s[';

$conn_site = mysqli_connect($db_server, $db_user, $db_password, $db_name);
$conn_site->set_charset("utf8");


// Función principal modificada para ser dinámica
function fetchAndSaveData($config, $conn_site) {
	
	
	// URL de la API
	$url = $config['data_url'];
	
	$data = [
        "UserID" => $config['username_data'],
        "Password" => $config['password_data'],
        "scs" => $config['scs']
    ];

	// Inicializa cURL
	$ch = curl_init($url);

	// Configuración de cURL para enviar la solicitud POST
	curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); // Recibir la respuesta como cadena
	curl_setopt($ch, CURLOPT_POST, true); // Usar el método POST
	curl_setopt($ch, CURLOPT_HTTPHEADER, [
		'Content-Type: application/json', // Encabezado para enviar JSON
	]);
	curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($data)); // Cuerpo de la solicitud en formato JSON

	// Ejecuta la solicitud
	$response = curl_exec($ch);

	$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);


    if ($httpCode === 200) {
		//$data_File = $GLOBALS['DATA_FILE_PREFIX'] . $config['idgpse'] . ".json";
		
		$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);
		
		
		// Obtener los vehículos
		//$vehicles = $data['items'];
		
		
		
		
		
		
        $n=0;
		
		
		foreach ($data as $vehicle) {
			$n++;	
			echo $n.'<br>';
			echo "<h2>Vehículo ID: {$vehicle['unitID']}</h2>";
			echo "<ul>";
			echo "<li>Fecha: {$vehicle['fecha']}</li>";
			echo "<li>Económico: {$vehicle['noEconomico']}</li>";
			echo "<li>Latitud: {$vehicle['latitud']}</li>";
			echo "<li>Longitud: {$vehicle['longitud']}</li>";
			echo "<li>Velocidad: {$vehicle['velocidad']} km/h</li>";
			echo "<li>Odómetro: {$vehicle['odometro']} km</li>";
			echo "<li>Placas: {$vehicle['placas']}</li>";
			echo "<li>Encendido: " . ($vehicle['ignicion'] ? "Sí" : "No") . "</li>";
			
			echo "<li>Pánico: " . ($vehicle['panico'] ? "Sí" : "No") . "</li>";
			echo "<li>Satélites: {$vehicle['noSatelites']}</li>";
			echo "<li>Fecha GPS: {$vehicle['fechaCreacion']}</li>";
			echo "</ul>";
			echo "<hr>";
			
			
			
			
			
			$id_vehiculo = $vehicle['unitID'];
			$economico = $vehicle['noEconomico'];
			$gpsDate = $vehicle['fechaCreacion'];
			$fechaUTC =  $vehicle['fechaUTC'];
			$horaUTC =  $vehicle['horaUTC'];
			$latitude = $vehicle['latitud'];
			$longitude = $vehicle['longitud'];
			$speed = $vehicle['velocidad'];
			$odometer = $vehicle['odometro'];
			$date = $vehicle['fecha'];
			$ignition = $vehicle['ignicion'] ? 1 : 0; // Convertir true/false a 1/0
			$panic = $vehicle['panico'] ? 1 : 0;
			$plates = $vehicle['placas'];
			$satellite = $vehicle['noSatelites'];
			
			
			
			$altitud =  $vehicle['altitud'];
			$heading =  $vehicle['heading'];
			$trip =  $vehicle['trip'];
			$horometro =  $vehicle['horometro'];
			$ubicacion =  $vehicle['ubicacion'];
			$codigoEvento =  $vehicle['codigoEvento'];
			$chofer =  $vehicle['chofer'];
			$sensorExterno =  $vehicle['sensorExterno'];
			$puerta =  $vehicle['puerta'];
			$inmovilizador =  $vehicle['inmovilizador'];
			$combustible1 =  $vehicle['combustible1'];
			$combustible2 =  $vehicle['combustible2'];
			$combustible3 =  $vehicle['combustible3'];
			$temperatura1 =  $vehicle['temperatura1'];
			$temperatura2 =  $vehicle['temperatura2'];
			$temperatura3 =  $vehicle['temperatura3'];
			$analogInput1 =  $vehicle['analogInput1'];
			$analogInput2 =  $vehicle['analogInput2'];
			$analogInput3 =  $vehicle['analogInput3'];
			$clase =  $vehicle['clase'];
			$estadoCiclo =  $vehicle['estadoCiclo'];
			$bateria1 =  $vehicle['bateria1'];
			$bateria2 =  $vehicle['bateria2'];
			$bateria3 =  $vehicle['bateria3'];
			$fatigaActivado =  $vehicle['fatigaActivado'];
			$valoresCANbus =  $vehicle['valoresCANbus'];
			$minutosApagado =  $vehicle['minutosApagado'];
			$minutosEncendidoMovimiento =  $vehicle['minutosEncendidoMovimiento'];
			$minutosEncendidoDetenido =  $vehicle['minutosEncendidoDetenido'];
			$odometroDia =  $vehicle['odometroDia'];
			$consumoCombustibleDia =  $vehicle['consumoCombustibleDia'];
			$dentroZonaAltoRiesgo =  $vehicle['dentroZonaAltoRiesgo'];
			$dentroZonaSegura =  $vehicle['dentroZonaSegura'];
			$nombreZonaRiesgo =  $vehicle['nombreZonaRiesgo'];
			$nombreZonaSegura =  $vehicle['nombreZonaSegura'];
			$estatusGPS =  $vehicle['estatusGPS'];
			$senalGSM =  $vehicle['senalGSM'];
			$fechaEntradaZonaRiesgo =  $vehicle['fechaEntradaZonaRiesgo'];
			$fechaEntradaZonaSegura =  $vehicle['fechaEntradaZonaSegura'];
			$icono =  $vehicle['icono'];
			$voltajePrincipal =  $vehicle['voltajePrincipal'];
			$voltajeBateria =  $vehicle['voltajeBateria'];
			$tiempoConduccion =  $vehicle['tiempoConduccion'];
			$antiRobo =  $vehicle['antiRobo'];
			$loadNumber =  $vehicle['loadNumber'];
			$noCaja =  $vehicle['noCaja'];
			$salida2 =  $vehicle['salida2'];
			$tipoVehiculo =  $vehicle['tipoVehiculo'];
			$errorMsg =  $vehicle['errorMsg'];
		



			
			
			$ids="0"; $ido = ""; $idunidad="";	$operador= ""; $celular_operador= "";
			
			$sql3="SELECT ID FROM Unidades where placas = '$plates'  ";
			$result3=mysqli_query($conn_site,$sql3);
			$encontre=mysqli_num_rows($result3);
			if($encontre > 0 ){
				$registro3=mysqli_fetch_array($result3);
				$idunidad= "".$registro3['ID'].""; 
			}	
				
			if(!empty($idunidad)){	
				$sql2="SELECT ID,ido FROM Servicios where idunidad = $idunidad and status = 5 ";
				$result2=mysqli_query($conn_site,$sql2);
				$encontre=mysqli_num_rows($result2);
				if($encontre > 0 ){
					$registro2=mysqli_fetch_array($result2);
					$ids= "".$registro2['ID']."";
					$ido= "".$registro2['ido']."";					
				}
			}
			
			
			
			
			
			
			$sqld="SELECT ids FROM Datos_GPS where plates = '$plates' and status in (0,1) Order by ID Limit 0,1 ";
			$resultd=mysqli_query($conn_site,$sqld);
			$encontre=mysqli_num_rows($resultd);
			if($encontre > 0 ){
				$registrod=mysqli_fetch_array($resultd);
				$ids= "".$registrod['ids'].""; 
			}
			
			
			
			if(!empty($ido)){	
				$sql2="SELECT nombre,telefono FROM Operadores where ID= $ido  ";
				$result2=mysqli_query($conn_site,$sql2);
				$encontre=mysqli_num_rows($result2);
				if($encontre > 0 ){
					$registro2=mysqli_fetch_array($result2);
					$operador= "".$registro2['nombre']."";
					$celular_operador= "".$registro2['telefono']."";					
				}
			}
			
			$sql2="INSERT INTO Datos_GPS  (
			ids,idgps,id_vehiculo,operador,celular_operador,date,economico,latitude,longitude,speed,odometer,plates,ignition,panic,satellite,gpsDate,
			altitud, 
			heading, 
			trip, 
			horometro, 
			ubicacion, 
			codigoEvento, 
			chofer, 
			sensorExterno, 
			puerta, 
			inmovilizador, 
			combustible1, 
			combustible2, 
			combustible3, 
			temperatura1, 
			temperatura2, 
			temperatura3, 
			analogInput1, 
			analogInput2, 
			analogInput3, 
			clase, 
			estadoCiclo, 
			bateria1, 
			bateria2, 
			bateria3, 
			fatigaActivado, 
			valoresCANbus, 
			minutosApagado, 
			minutosEncendidoMovimiento, 
			minutosEncendidoDetenido, 
			odometroDia, 
			consumoCombustibleDia, 
			dentroZonaAltoRiesgo, 
			dentroZonaSegura, 
			nombreZonaRiesgo, 
			nombreZonaSegura, 
			estatusGPS, 
			senalGSM, 
			fechaEntradaZonaRiesgo, 
			fechaEntradaZonaSegura, 
			icono, 
			voltajePrincipal, 
			voltajeBateria, 
			tiempoConduccion, 			
			antiRobo, 
			loadNumber, 
			noCaja, 
			salida2, 
			tipoVehiculo, 
			errorMsg, 
			fecha,hora,status
			
			) VALUES 
			(
			'$ids','$idgpsedb','$id_vehiculo','$operador','$celular_operador','$date','$economico','$latitude','$longitude','$speed','$odometer','$plates','$ignition','$panic','$satellite','$gpsDate',
			'$altitud', 
			'$heading', 
			'$trip', 
			'$horometro', 
			'$ubicacion', 
			'$codigoEvento', 
			'$chofer', 
			'$sensorExterno', 
			'$puerta', 
			'$inmovilizador', 
			'$combustible1', 
			'$combustible2', 
			'$combustible3', 
			'$temperatura1', 
			'$temperatura2', 
			'$temperatura3', 
			'$analogInput1', 
			'$analogInput2', 
			'$analogInput3', 
			'$clase', 
			'$estadoCiclo', 
			'$bateria1', 
			'$bateria2', 
			'$bateria3', 
			'$fatigaActivado', 
			'$valoresCANbus', 
			'$minutosApagado', 
			'$minutosEncendidoMovimiento', 
			'$minutosEncendidoDetenido', 
			'$odometroDia', 
			'$consumoCombustibleDia', 
			'$dentroZonaAltoRiesgo', 
			'$dentroZonaSegura', 
			'$nombreZonaRiesgo', 
			'$nombreZonaSegura', 
			'$estatusGPS', 
			'$senalGSM', 
			'$fechaEntradaZonaRiesgo', 
			'$fechaEntradaZonaSegura', 
			'$icono', 
			'$voltajePrincipal', 
			'$voltajeBateria', 
			'$tiempoConduccion', 			
			'$antiRobo', 
			'$loadNumber', 
			'$noCaja', 
			'$salida2', 
			'$tipoVehiculo', 
			'$errorMsg', 
			'$fecha','$hora','0')";																	
			$result2=mysqli_query($conn_site,$sql2);
			
			
			
			
			
			
			$sql2="INSERT INTO Datos_GPS_Cliente  (
			ids,idgps,id_vehiculo,operador,celular_operador,date,economico,latitude,longitude,speed,odometer,plates,ignition,panic,satellite,gpsDate,
			altitud, 
			heading, 
			trip, 
			horometro, 
			ubicacion, 
			codigoEvento, 
			chofer, 
			sensorExterno, 
			puerta, 
			inmovilizador, 
			combustible1, 
			combustible2, 
			combustible3, 
			temperatura1, 
			temperatura2, 
			temperatura3, 
			analogInput1, 
			analogInput2, 
			analogInput3, 
			clase, 
			estadoCiclo, 
			bateria1, 
			bateria2, 
			bateria3, 
			fatigaActivado, 
			valoresCANbus, 
			minutosApagado, 
			minutosEncendidoMovimiento, 
			minutosEncendidoDetenido, 
			odometroDia, 
			consumoCombustibleDia, 
			dentroZonaAltoRiesgo, 
			dentroZonaSegura, 
			nombreZonaRiesgo, 
			nombreZonaSegura, 
			estatusGPS, 
			senalGSM, 
			fechaEntradaZonaRiesgo, 
			fechaEntradaZonaSegura, 
			icono, 
			voltajePrincipal, 
			voltajeBateria, 
			tiempoConduccion, 			
			antiRobo, 
			loadNumber, 
			noCaja, 
			salida2, 
			tipoVehiculo, 
			errorMsg, 
			fecha,hora,status
			
			) VALUES 
			(
			'$ids','$idgpsedb','$id_vehiculo','$operador','$celular_operador','$date','$economico','$latitude','$longitude','$speed','$odometer','$plates','$ignition','$panic','$satellite','$gpsDate',
			'$altitud', 
			'$heading', 
			'$trip', 
			'$horometro', 
			'$ubicacion', 
			'$codigoEvento', 
			'$chofer', 
			'$sensorExterno', 
			'$puerta', 
			'$inmovilizador', 
			'$combustible1', 
			'$combustible2', 
			'$combustible3', 
			'$temperatura1', 
			'$temperatura2', 
			'$temperatura3', 
			'$analogInput1', 
			'$analogInput2', 
			'$analogInput3', 
			'$clase', 
			'$estadoCiclo', 
			'$bateria1', 
			'$bateria2', 
			'$bateria3', 
			'$fatigaActivado', 
			'$valoresCANbus', 
			'$minutosApagado', 
			'$minutosEncendidoMovimiento', 
			'$minutosEncendidoDetenido', 
			'$odometroDia', 
			'$consumoCombustibleDia', 
			'$dentroZonaAltoRiesgo', 
			'$dentroZonaSegura', 
			'$nombreZonaRiesgo', 
			'$nombreZonaSegura', 
			'$estatusGPS', 
			'$senalGSM', 
			'$fechaEntradaZonaRiesgo', 
			'$fechaEntradaZonaSegura', 
			'$icono', 
			'$voltajePrincipal', 
			'$voltajeBateria', 
			'$tiempoConduccion', 			
			'$antiRobo', 
			'$loadNumber', 
			'$noCaja', 
			'$salida2', 
			'$tipoVehiculo', 
			'$errorMsg', 
			'$fecha','$hora','0')";																	
			
			$result2=mysqli_query($conn_site,$sql2);
			
			
			
			
			
			$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);
			
			
			echo 'AAAAAAAAAAAAA '.$encontre.'<br>';
			
			
			if($encontre == 0 ){
				
				$sql2="INSERT INTO Unidades_GPS_Cliente  (idgps,id_vehiculo,economico,plates,autorizado) VALUES 
					('$idgpsedb','$id_vehiculo','$economico','$plates','$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í)
        
        return true;
    } elseif ($httpCode === 401) {
		
		
        return fetchAndSaveData($config, $conn_site);
    }

    error_log("Error en solicitud para ID: {$config['idgpse']}. Código: $httpCode");
    return false;
}







// Obtener todas las configuraciones activas tipo = 1
$sql = "SELECT * FROM GPS WHERE status = 1 and tipo = 2 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'],
            'username_data' => $config['username_data'],
            'password_data' => $config['password_data'],
            'scs' => $config['scs'],
        ];

        // 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>";

?>