<?php
date_default_timezone_set('Asia/Kolkata');

$accountID='';
$deviceID='';
$caseID='';
$caseStartTime='';
$caseCloseTime='';
$formate='';
$formate=$_GET['formate'];
$user=$_GET['user'];
$password=$_GET['password'];

$response='';
$jsonresponse='';
if($user=="gvkemri" && $password=="glovision"){
      if($_GET['caseStartTime']<$_GET['caseCloseTime'] && abs($_GET['caseStartTime']-$_GET['caseCloseTime'])<86400){
          $accountID=$_GET['accountID'];
          $deviceID=$_GET['vehicleRegID'];
          $caseID=$_GET['caseID'];
          $caseStartTime = $_GET['caseStartTime'];
          $caseCloseTime = $_GET['caseCloseTime'];
          $caseDist=getCaseDistance($accountID,$deviceID,$caseStartTime,$caseCloseTime);
          $caseDistsplit=explode('*',$caseDist);
          $casedistance=$caseDistsplit[0];
          $caseStartLat=$caseDistsplit[1];
          $caseStartLong=$caseDistsplit[2];
          $caseEndLat=$caseDistsplit[3];
          $caseEndLong=$caseDistsplit[4];
          $motionstarttime=$caseDistsplit[5];
          $motinendtime=$caseDistsplit[6];
     
          $jsonresponse= '{"Status":"success","ReceivedTime":"'.date('d-M-Y h:i:s a',time()).'","Distance":"'.$casedistance.'","StartLat":"'.$caseStartLat.'","StartLong":"'.$caseStartLong.'","EndLat":"'.$caseEndLat.'","EndLong":"'.$caseEndLong.'","MotionStartTime":"'.($motionstarttime==0?'':date('d-M-Y h:i:s a',$motionstarttime)).'","MotionEndTime":"'.($motinendtime==0?'':date('d-M-Y h:i:s a',$motinendtime)).'"}';

         $response="success";         
  
        if($formate=="xml"){
             header("Content-Type: text/xml;charset=utf-8");  
             echo "<?xml version='1.0' standalone='yes'?><casemanager><Status>".$response."</Status><ReceivedTime>".date('d-M-Y h:i:s a',time())."</ReceivedTime></casemanager>";
         }else{
               header('Content-Type: application/json');
             echo $jsonresponse;
         }
    }else{//fail if

       if($_GET['caseStartTime']>$_GET['caseCloseTime'])
         echo '{"result": "' ."From Date Should be less then To Date" .'"}';
       else
        echo '{"result": "' ."Requested Time Range Should be in 24 Hr" .'"}';

   }
 }

  function getCaseDistance($accountID,$deviceID,$fromDate,$toDate) {
   $host='localhost';

   $currentTime=time();
   $difftime1=$currentTime-$fromDate;
   $difftime2=$currentTime-$toDate;
   if($difftime1<10800 && $difftime2<10800){//if request for befor 3 hours data go to backup server
         $host="up108.glovision.co";
    }



   error_log($host."casemgrdist");
   $gtsconnect = mysqli_connect($host,'gts', 'opengts') or die ("Unable to connect to the database1 : " . mysqli_error($gtsconnect));
   mysqli_select_db($gtsconnect, 'gts');
   $sql = "Select accountID,deviceID,address,from_unixtime( timestamp, '%d-%m-%Y %H:%i:%s' ) as time1,statusCode,latitude,longitude,geozoneID,speedKPH,timestamp as unixtime from EventData where accountID='$accountID' and deviceID='".$deviceID."' and statusCode='61714' and timestamp BETWEEN '$fromDate' AND '$toDate'";
error_log($sql."casemgrdist");
        $qry_result = mysqli_query($gtsconnect, $sql) or die(mysqli_error($gtsconnect));
        $data=array();
        $inmotionnum_rows = mysqli_num_rows($qry_result);
        if($inmotionnum_rows==0){
          $sql = "Select accountID,deviceID,address,from_unixtime( timestamp, '%d-%m-%Y %H:%i:%s' ) as time1,statusCode,latitude,longitude,geozoneID,speedKPH from EventData where accountID='$accountID' and deviceID='".$deviceID."'  and timestamp BETWEEN '$fromDate' AND '$toDate'";
        $qry_result = mysqli_query($gtsconnect, $sql) or die(mysqli_error($gtsconnect));
        }
        $num_rows = mysqli_num_rows($qry_result);
        $cnt=0;
        $indx=0;
        $totaldis=0;
        $previouslat=0;
        $previouslng=0;
        $startlat=0;
        $startlong=0;
        $endlat=0;
        $endlong=0;
        $resultdata='';
        $lats=array();
        $longs=array();
        $timestamps=array();
        
        while($row = mysqli_fetch_array($qry_result)) {
            $timestamps[$cnt]=$row['unixtime'];
            $lats[$cnt]=$row['latitude'];
            $longs[$cnt]=$row['longitude'];
            $cnt++;
        }
          $totaldis=0;
         $slat='';
         $slng='';
         $stime=0;
         $etime=0;
        //echo count($timestamps);
          for($cnt=0;$cnt<count($timestamps)-1;$cnt++){
              if($cnt==0){$slat=$lats[$cnt];$slng=$longs[$cnt];$stime=$timestamps[$cnt];}
              $starttime=$timestamps[$cnt];
              $nexttime=$timestamps[$cnt+1];
              $startlat=$lats[$cnt];
              $startlong=$longs[$cnt];
              $nextlat=$lats[$cnt+1];
              $nextlong=$longs[$cnt+1];
              $etime=$timestamps[$cnt+1];
              $discheck=distance1($startlat,$startlong, $nextlat, $nextlong);
              $difftime=$nexttime-$starttime;
        //  echo $discheck.'-'.$nexttime.'~'.$starttime."<br>";
            //  echo $discheck."\n";
              if(($discheck/($difftime)>0.04)){
                continue;
              } 
              $totaldis=$totaldis+$discheck;
             }
          
       // echo $totaldis.'rtotaldis';
    $startlat=round($slat,5);
    $startlong=round($slng,5);
    $endlat=round($nextlat,5);
    $endlong=round($nextlong,5);
     if($inmotionnum_rows==0){
       $totaldis=0;
    }


  error_log("casemgrdist : ".$totaldis.'-'.round($startlat,5).'/'.round($startlong,5).'---'.round($previouslat,5).'/'.round($previouslng,5));
       $totaldis=round($totaldis,2);
      $resultdata=$totaldis.'*'.$startlat.'*'.$startlong.'*'.$endlat.'*'.$endlong."*".$stime."*".$etime; 
       return $resultdata;

 }

function updateCaseClosure($account,$device,$case,$caseStartTime,$caseCloseTime,$caseDist) {
    $host='localhost';
   if($account=="gvk-up-102"){
   $host='94.23.211.49';
   }
  error_log($host."casemgrdist1");
   $tacconnect = mysqli_connect($host,'root', 'gl0v1s10n') or die ("Unable to connect to the database1 : " . mysqli_error($tacconnect));
   mysqli_select_db($tacconnect, 'autocare_gts');
   $updatequery="INSERT into caseManager (accountID,deviceID,caseID,caseTimestamp,caseCloseTime,caseDistance) VALUES ('$account','$device','$case','$caseStartTime','$caseCloseTime','$caseDist') ON DUPLICATE KEY UPDATE caseCloseTime='$caseCloseTime',caseDistance='$caseDist'";
  if($case!=''){
   mysqli_query($tacconnect,$updatequery) or die(mysqli_error($tacconnect));
   error_log($updatequery." - casemgrdist");
   }


}

 function distance1($lat1, $lon1, $lat2, $lon2) {
        if($lat1 == $lat2 && $lon1 == $lon2){
            return 0;

        }else{$theta = $lon1 - $lon2;
            $dist = sin(deg2rad($lat1)) * sin(deg2rad($lat2)) +  cos(deg2rad($lat1)) * cos(deg2rad($lat2)) * cos(deg2rad($theta));
            $dist = acos($dist);
            $dist = rad2deg($dist);
            $miles = $dist * 60 * 1.1515;
// echo $lat1.'-'.$lon1.'-'.$lat2.'-'.$lon2.'--'.round(($miles* 1.609344),2)."<br>";
            return round(($miles* 1.609344),2);
        }
 }

?>
