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' => ''));
}
}
}
?>