File: /home/cafsindia/ntc_cafsinfotech_in/cron/tracking.php
<?php
require_once('./dbconnect.php');
class tracking extends dbconnect{
protected $url = null;
protected $user = null;
protected $pwd = null;
protected $token = null;
public function __construct() {
$this->open_db();
$this->url = "http://vplus.vigil.co.za/ntc/api/";
$this->user = "NTCAPI1";
$this->pwd = "password";
$this->get_token();
}
//CURL FUNCTION
public function curl($url){
$ch = curl_init(); // Initiate curl
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); // Disable SSL verification
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); // Will return the response, if false it print the response
curl_setopt($ch, CURLOPT_URL,$url); // Set the url
$result =curl_exec($ch);// Execute
curl_close($ch);// Closing
return json_decode($result);
}
//GETTING DATA FOR MULTIPLE CURL CALL
public function get_curl_opt($url){
$ch = curl_init();
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_URL,$url);
return $ch;
}
public function real_escape_string($value){
$value = mysql_real_escape_string($value);
if(empty($value)){
$value = 0;
}
return $value;
}
//GET OR GENERATE TOKEN
public function get_token(){
$token_query = $this->runQuery("select token,expire_date from cw_vehicle_api_token where trans_status = '1'");
$token_count = (int)$this->num_rows($token_query);
$trans_date = date('Y-m-d H:i:s');
$status = array();
if($token_count > 0){
$token_info = $this->result($token_query);
$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/$this->user/$this->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'){
$this->runQuery("INSERT INTO cw_vehicle_api_token(token,expire_date,trans_created_date) values ('$result->Token','$expire_date','$trans_date')");
}else{
$this->runQuery("UPDATE `cw_vehicle_api_token` SET `token`='$this->token',`expire_date`='$expire_date',`trans_updated_date`='$trans_date'");
}
}else{
$this->token = false;
}
}
}
//GET VEHICLE LAST POSITION
public function get_last_position(){
if($this->token){
$vehicle_query = $this->runQuery("select prime_vehicle_master_id,asset_id from cw_vehicle_master where trans_status = '1'");
$vehicle_info = $this->result($vehicle_query);
$result = array();
$send_post = array();
$multi_curl = curl_multi_init();
foreach($vehicle_info as $info){
$prime_vehicle_master_id = $info->prime_vehicle_master_id;
$asset_id = $info->asset_id;
$send_url = $this->url."$this->token/vehicleLastPosition/$asset_id";
$send_post[$prime_vehicle_master_id] = $this->get_curl_opt($send_url);
curl_multi_add_handle($multi_curl, $send_post[$prime_vehicle_master_id]);
}
$running = null;
do{
curl_multi_exec($multi_curl, $running);
}while ($running);
$insert_count = 0;
$update_count = 0;
foreach($send_post as $vehicle_id => $ch){
$response = json_decode(curl_multi_getcontent($ch));
if(property_exists($response, 'AssetId')){
$assetid = $response->AssetId;
$driverid = $response->DriverId;
$positiondate = date('Y-m-d H:i:s',strtotime($response->PositionDate));
$latitude = $response->Latitude;
$longitude = $response->Longitude;
$eventtype = $response->EventType;
$geoaddress = $response->GeoAddress;
$speed = $response->Speed;
$odometer = $response->Odometer;
$roadspeed = $response->RoadSpeed;
$altitude = $response->Altitude;
if($response->OverSpeed){
$overspeed = 1;
}else{
$overspeed = 0;
}
$result[$vehicle_id] = array("prime_vehicle_master_id"=>$vehicle_id,"assetid"=>$assetid,"positiondate"=>$positiondate);
$trans_date = date('Y-m-d H:i:s');
if(!$this->check_vehicle_already_exists($assetid,(int)$vehicle_id)){
$insert_info = $this->runQuery("INSERT INTO cw_vehicle_last_position(prime_vehicle_master_id,assetid,positiondate,geoaddress,latitude,longitude,eventtype,speed,roadspeed,driverid,altitude,overspeed,trans_created_date) values ('$vehicle_id','$assetid','$positiondate','$geoaddress','$latitude','$longitude','$eventtype','$speed','$roadspeed','$driverid','$altitude','$overspeed','$trans_date')");
$insert_count++;
}else{
$update_info = $this->runQuery("UPDATE `cw_vehicle_last_position` SET `positiondate`='$positiondate',`geoaddress`='$geoaddress',`latitude`='$latitude',`longitude`='$longitude',`eventtype`='$eventtype',`speed`='$speed',`roadspeed`='$roadspeed',`driverid`='$driverid',`altitude`='$altitude',`overspeed`='$overspeed',`trans_updated_date` = '$trans_date' WHERE prime_vehicle_master_id = '$vehicle_id' and assetid = '$assetid'");
$update_count++;
}
}
curl_multi_remove_handle($multi_curl, $ch);
}
return json_encode(array('status' => true,'vehicle Last Position Inserted' => $insert_count,'vehicle Last Position Updated' => $update_count,'data'=>$result));
}else{
return json_encode(array('status' => false,'data' => ''));
}
}
//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 ";
}
$vehicle_query = $this->runQuery("select * from cw_vehicle_last_position where $add_condition assetid = '$assetid' and trans_status = '1'");
$vehicle_count = (int)$this->num_rows($vehicle_query);
if($vehicle_count > 0){
return true;
}else{
return false;
}
}
//GET VEHICLE POSITION HISTORY
public function get_position_history($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 json_encode(array('status' => true,'data' => $result));
}else{
return json_encode(array('status' => false,'message' => 'Check AssetId and Try Again'));
}
}
/* TRIPS START */
//GET VEHICLE TRIP INFORMATION FOR SPECIFIC VEHICLE
public function get_vehicle_trip_information($tripid){
if($tripid){
$send_url = $this->url."$this->token/trip-coordinates/$tripid";
$result = $this->curl($send_url);
return json_encode(array('status' => true,'data' => $result));
}else{
return json_encode(array('status' => false,'message' => 'Please Contact Admin..!'));
}
}
//GET TRIPS INFORMATION OF VEHICLE FOR SPECIFIC DATE
public function get_specific_trip_info($assetid,$fromdate,$todate){
if($this->check_vehicle_already_exists($assetid) && $fromdate && $todate){
$fromdate = new DateTime($fromdate);
$fromdate = $fromdate->format("Ymdhms");
$todate = new DateTime($todate);
$todate = $todate->format("Ymdhms");
$send_url = $this->url."$this->token/trips/$assetid/$fromdate/$todate";
$result = $this->curl($send_url);
return json_encode(array('status' => true,'data' => $result));
}else{
return json_encode(array('status' => false,'message' => 'Please Contact Admin..!'));
}
}
//GET TRIPS INFORMATION OF VEHICLE FOR SPECIFIC DATE
public function get_all_trip_info($fromdate,$todate){
if($fromdate && $todate){
$fromdate = new DateTime($fromdate);
$fromdate = $fromdate->format("Ymdhms");
$todate = new DateTime($todate);
$todate = $todate->format("Ymdhms");
$send_url = $this->url."$this->token/trips-all/$fromdate/$todate";
$result = $this->curl($send_url);
return json_encode(array('status' => true,'data' => $result));
}else{
return json_encode(array('status' => false,'message' => 'Please Contact Admin..!'));
}
}
//GET TRIP DETAILS OF VEHICLE FOR SPECIFIC DATE
public function get_all_trip_details_info($fromdate,$todate){
if($fromdate && $todate){
$fromdate = new DateTime($fromdate);
$fromdate = $fromdate->format("Ymdhms");
$todate = new DateTime($todate);
$todate = $todate->format("Ymdhms");
$send_url = $this->url."$this->token/trips-all-details/$fromdate/$todate";
$result = $this->curl($send_url);
return json_encode(array('status' => true,'data' => $result));
}else{
return json_encode(array('status' => false,'message' => 'Please Contact Admin..!'));
}
}
//GET TRIPS DETAIL OF VEHICLE FOR SPECIFIC DATE
public function get_specific_trip_details_info($assetid,$fromdate,$todate){
if($this->check_vehicle_already_exists($assetid) && $fromdate && $todate){
$fromdate = new DateTime($fromdate);
$fromdate = $fromdate->format("Ymdhms");
$todate = new DateTime($todate);
$todate = $todate->format("Ymdhms");
$send_url = $this->url."$this->token/trips-details/$assetid/$fromdate/$todate";
$result = $this->curl($send_url);
return json_encode(array('status' => true,'data' => $result));
}else{
return json_encode(array('status' => false,'message' => 'Please Contact Admin..!'));
}
}
/* TRIPS END */
}
?>