<?php


error_reporting(E_ALL);
ini_set('display_errors', '1');



//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://rastreo.blocator.com.mx/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 = '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 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);
		
		
		//echo $data;
		
		// Obtener los vehículos
		//$vehicles = $data['items'];
		
		
		
		
		
		
        $n=0; $nu=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'];
		

			$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 'encontre '.$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);
			}
			



			/*$sqlugc="SELECT ID FROM Unidades_GPS_Cliente where id_vehiculo = $id_vehiculo and ids is not null and idm is not null and ido is not null and autorizado = 1 ";		
			$resultugc=mysqli_query($conn_site,$sqlugc);
			$countugc=mysqli_num_rows($resultugc);
			
			if($countugc==1){
				
				$nu++;   */
		
				
				
				$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']."";					
					}
				}
				
				
				$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);
				
				if($encontredgps==0){
				
				$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);
				
				$sqlec="SELECT max(ID) as maxid FROM Datos_GPS ";				
				$resec=mysqli_query($conn_site,$sqlec);
				$registroec=mysqli_fetch_array($resec);
				$iddgps= "".$registroec['maxid']."";
				
				///Aqui voy a revisar de una vez si hay q mandar alguna alerta
				
				
				
				
				
				
					
				
				//////aqui mando la alerta de panico
				
				if($panic==1){
					
					$alerta['datos'] = array ( 
							"iddgps" => "$iddgps",
							"tipo" => "Panico" 
					);
					
					$json_alerta = json_encode($alerta);

						
						$options = array(
						CURLOPT_URL => 'https://rastreo.blocator.com.mx/panel/webhook_alertas.php',
						CURLOPT_RETURNTRANSFER => true,
						CURLOPT_POST => true,
						CURLOPT_POSTFIELDS => $json_alerta,
						CURLOPT_HTTPHEADER => array(
							'Content-Type: application/json',
							'Content-Length: ' . strlen($json_alerta)
							)
						);

						$curl = curl_init();
						curl_setopt_array($curl, $options);
						$response = curl_exec($curl);
						
						echo $response;
						
						curl_close($curl);
					
					
					
				}
				
				//////aqui mando la alerta de panico
				
				
				
				
				////aqui reviso si hay alerta para enviar
				echo 'aqui reviso si hay alerta para enviar';
				
				$sqle = "SELECT * FROM Eventos WHERE codigo = '$codigoEvento' and notificar = '1' ";
				$resulte = mysqli_query($conn_site, $sqle);
				$counte=mysqli_num_rows($resulte);	
				
				echo 'counte '.$counte.'<br>';
				
				if($counte==1){
					
					
					
					$alerta['datos'] = array ( 
							"iddgps" => "$iddgps",
							"tipo" => "Evento"
					);
					
					
					$json_alerta = json_encode($alerta);

						
						$options = array(
						CURLOPT_URL => 'https://rastreo.blocator.com.mx/panel/webhook_alertas.php',
						CURLOPT_RETURNTRANSFER => true,
						CURLOPT_POST => true,
						CURLOPT_POSTFIELDS => $json_alerta,
						CURLOPT_HTTPHEADER => array(
							'Content-Type: application/json',
							'Content-Length: ' . strlen($json_alerta)
							)
						);

						$curl = curl_init();
						curl_setopt_array($curl, $options);
						$response = curl_exec($curl);
						
						echo $response;
						
						curl_close($curl);
					
					
					
					
					
					
					
					}
				
				}
				
				
				
					$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);
	
				
			
			//}
			
			
		}
		
		
		echo json_encode(["status" => "success", "message" => "Datos actualizados"]);
		
		
		
		if($nu>0){
		
			$sql2="INSERT INTO Recibir_Datos_GPS (datos) VALUES ('$response_db')";																	
			$result2=mysqli_query($conn_site,$sql2);
		
			// (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>";




?>