MOON
Server: Apache
System: Linux nserver.cafsindia.com 4.18.0-553.104.1.lve.el8.x86_64 #1 SMP Tue Feb 10 20:07:30 UTC 2026 x86_64
User: cafsindia (1002)
PHP: 8.2.30
Disabled: NONE
Upload Files
File: //home/cafsindia/ntc_cafsinfotech_in_bk/application/models/tracking_api.php
<?php
class Tracking_api extends CI_Model
{
	protected  $token  = null;	
	protected  $url    = null;	
	
	public function __construct(){
        parent::__construct();
	    $this->url = "http://vplus.vigil.co.za/ntc/api/";
		$this->get_token();	
	}
	
	 //GET OR GENERATE TOKEN
	 public function get_token(){
		$user         = "NTCAPI1";
		$pwd          = "password";
		$query        = 'select token,expire_date from cw_vehicle_api_token where trans_status = 1';
		$token_query  = $this->db->query("CALL sp_a_run ('SELECT','$query')"); 
		$token_count  = (int)$token_query->num_rows();
		$token_query->next_result();	
		$trans_date   = date('Y-m-d H:i:s');
		$status       = array();
		if($token_count > 0){
			$token_info   = $token_query->result();
			$token        = $token_info[0]->token;
			$expire_date  = new DateTime($token_info[0]->expire_date);
			$date_now     = new DateTime();
			if($date_now > $expire_date){
				$status = array('sts' => false,'mode'=>'UPDATE');
			}else{ 
				$status = array('sts' => true,'mode'=>$token_info[0]->token);
			}
		}else{
			$status = array('sts' => false,'mode'=>"INSERT");
		}
		$sts = $status['sts'];
		if($sts){
			$this->token = $status['mode'];
		}else{
			$send_url = $this->url."login/$user/$pwd";
			$result   = $this->curl($send_url);	
			if((int)$result->IsSuccess === 1){	
				$trans_date  = date('Y-m-d H:i:s');			
				$this->token = $result->Token;
				$expire_date = date('Y-m-d H:i:s',strtotime($result->Expires));
				if($status['mode'] === 'INSERT'){
					$insert_query = "INSERT INTO cw_vehicle_api_token(token,expire_date,trans_created_date) values (\"$result->Token\",\"$expire_date\",\"$trans_date\")";
					$insert_query = $this->db->query("CALL sp_a_run ('INSERT','$insert_query')");
					$insert_query->next_result();
				}else{
					$set_query     = 'token = "'. $this->token .'" ,expire_date = "'. $expire_date .'",trans_updated_date = "'.$trans_date.'"';
					$update_query  = 'UPDATE cw_vehicle_api_token SET '. $set_query .' ';
					$update_query = $this->db->query("CALL sp_a_run ('UPDATE','$update_query')");
					$update_query->next_result();
				}
			}else{
				$this->token = false;
			}
		}
    }
	
	//GET VEHICLE POSITION HISTORY
	public function get_position_history_info($assetid,$form_date){
		if($this->check_vehicle_already_exists($assetid)){
			$form_date  = new DateTime($form_date);
			$form_date  = $form_date->format("Ymdhms");
			$send_url   = $this->url."$this->token/vehiclepositionhistory/$assetid/$form_date";
			$result     = $this->curl($send_url);	
			return array('status' => true,'data' => $result);
		}else{
			return array('status' => false,'message' => 'Check AssetId and Try Again');
		}
	}
	
	//GET VEHICLE ALREADY EXISTS
	public function check_vehicle_already_exists($assetid,$vehicle_id = -1){
		$add_condition = '';
		if((int)$vehicle_id > 0){
			$add_condition = "prime_vehicle_master_id = '$vehicle_id' and ";
		}
		$query          = "select * from cw_vehicle_master where $add_condition asset_id = \"$assetid\" and trans_status = 1";
		$vehicle_query  = $this->db->query("CALL sp_a_run ('SELECT','$query')"); 
		$vehicle_count  = (int)$vehicle_query->num_rows();
		$vehicle_query->next_result();	
		if($vehicle_count > 0){
			return true;
		}else{
			return false;
		}
	}
	
	//CURL FUNCTION
	public function curl($url){		
		$ch = curl_init();		
		curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); 	
		curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 	
		curl_setopt($ch, CURLOPT_URL,$url); 	
		$result =curl_exec($ch);	
		curl_close($ch);
		return json_decode($result);
	}
	
	//GET VEHICLE LAST POSITION
	public function get_last_position($prime_vehicle_master_id){	
		if($this->token){	
			$query          = "select prime_vehicle_master_id,asset_id from cw_vehicle_master where prime_vehicle_master_id = \'$prime_vehicle_master_id\' and trans_status = \'1\'";
			$vehicle_query  = $this->db->query("CALL sp_a_run ('SELECT','$query')"); 
			$vehicle_info   = $vehicle_query->row();
			$vehicle_query->next_result();	
			$vehicle_id              = $vehicle_info->prime_vehicle_master_id;
			$asset_id                = $vehicle_info->asset_id;
			$send_url                = $this->url."$this->token/vehicleLastPosition/$asset_id";
			$result                  = $this->curl($send_url);
			$return_array            = array();
			if(property_exists($result, 'AssetId')){
				$assetid      = $result->AssetId;
				$driverid     = $result->DriverId;
				$positiondate = date('Y-m-d H:i:s',strtotime($result->PositionDate));
				$latitude     = $result->Latitude;
				$longitude    = $result->Longitude;
				$eventtype    = $result->EventType;
				$geoaddress   = $result->GeoAddress;
				$speed        = $result->Speed;
				$odometer     = $result->Odometer;
				$roadspeed    = $result->RoadSpeed;
				$altitude     = $result->Altitude;
				if($result->OverSpeed){
					$overspeed    = 1;
				}else{
					$overspeed    = 0;
				}
				$return_array          = array(
					"prime_vehicle_master_id" => $vehicle_id,
					"geoaddress"              => $geoaddress,
					"latitude"                => $latitude,
					"longitude"               => $longitude,
					"eventtype"               => $eventtype,
					"speed"                   => $speed,
					"roadspeed"               => $roadspeed,
					"driverid"                => $driverid,
					"altitude"                => $altitude,
					"overspeed"               => $overspeed,
					"assetid"                 => $assetid,
					"positiondate"            => $positiondate
				);
				return json_encode(array('status' => true,'data'=>$return_array));
			}else
			if(property_exists($result, 'Message')){
				return json_encode(array('status' => false,'message'=>"Asset Id Doesn't exists"));
			}else{
				return json_encode(array('status' => false,'message'=>"please contact Admin..!"));
			}
		}else{
			return json_encode(array('status' => false,'data' => ''));
		}			
	}
}
?>