<?php
include "../configAutoTrigger.php";
include '../GTSDistanceCalculationnew.php';
$unclosedCases = getUnclosedCases($accountID);


var_dump($unclosedCases);die();
for ($caseindx = 0;$caseindx < count($unclosedCases);$caseindx++) {
    $caseID = $unclosedCases[$caseindx][0];
    $deviceID = $unclosedCases[$caseindx][1];
    $fromDate = $unclosedCases[$caseindx][2];
    $cluster = $unclosedCases[$caseindx][17];
    $basestartlatlng = $unclosedCases[$caseindx][18];
    $baseendlatlng = $unclosedCases[$caseindx][19];
    $sceneReachTime = $fromDate + $unclosedCases[$caseindx][13];

    $scenelatlng=$unclosedCases[$caseindx][20];
    $hsptlETA = $fromDate + $unclosedCases[$caseindx][13] + $unclosedCases[$caseindx][16];
    $toDate = $unclosedCases[$caseindx][7];//default case close time 4 hours a
    $server = $gtsserver;
    $tempaccountID = $accountID;
    $caseType = $unclosedCases[$caseindx][14];
    if (!getDeviceServer($accountID, $deviceID)) {
        $LiveGTS = "als2local";
        $server = "als2local";
        $tempaccountID = "gvk-up-backup";
    }


   /*

    if Case Type IFT 
        Base Start and Scene arrival same
   */
    if($caseType=="ift" && $unclosedCases[$caseindx][6] == "0"){
            $events= getStartingEvent($accountID,$deviceID,$fromDate,time(),$server);
                if(count($events)>2){
                  /*
                      Base Arrivel Event Trigger
                  */
                  $data=array(
                       "zoneType"=>"baseLocation",
                       "caseID"=> $caseID,
                       "accountID"=>$accountID,
                       "alertType"=> 'Depart',
                       "geozoneID"=>'',
                       "triggerTime"=>$events[1],
                       "speed"=>$events[5],
                       "distance"=>"",
                        "offlineStatus"=>"false",
                       "latitude"=>$events[2],
                       "longitude"=>$events[3]

                 );
                 callService($data,$cluster);
                 /*
                    Scene Arrivel Event Trigger
                 */
                 $data=array(
                       "zoneType"=>"scene",
                       "caseID"=> $caseID,
                       "accountID"=>$accountID,
                       "alertType"=> 'Arrived',
                       "geozoneID"=>'',
                       "triggerTime"=>$events[1],
                       "speed"=>$events[5],
                       "distance"=>"",
                        "offlineStatus"=>"false",
                       "latitude"=>$events[2],
                       "longitude"=>$events[3]

                 );
                 callService($data,$cluster);

                  $baseDepartLatLng=$events[2]."/".$events[3];
                  updateCaseStatus($accountID,$caseID,$events[1],"departed",$baseDepartLatLng,$deviceID);
                  updateSceneStatus($accountID,$caseID,$events[1],"arrived",$baseDepartLatLng,$deviceID);
                 continue;
               }

    }



   /* 
            if base depart found 
            from time chnaged to depart found 

  */
   if($unclosedCases[$caseindx][6] != "0"){
         $fromDate=$unclosedCases[$caseindx][6];

         if($unclosedCases[$caseindx][9]!="0"){
            $fromDate=$unclosedCases[$caseindx][9];
         }
        if($unclosedCases[$caseindx][10]!="0"){
            $fromDate=$unclosedCases[$caseindx][10];
         }
         if($unclosedCases[$caseindx][11]!="0"){
            $fromDate=$unclosedCases[$caseindx][11];
         }
        if($unclosedCases[$caseindx][12]!="0"){
            $fromDate=$unclosedCases[$caseindx][12];
         } 
    }
   


    $basedepartfound="no";
    if($unclosedCases[$caseindx][6]!="0"){
         $basedepartfound="yes";
    }

    $caseData = getCaseEvents($tempaccountID, $deviceID, $fromDate, $toDate, $server, $caseID, $basestartlatlng, $baseendlatlng,$basedepartfound);

  var_dump($caseData);
   die();
    $zoneID = $caseID . "_" . $deviceID . "_bs"; //base start
    $zoneID2 = $caseID . "_" . $deviceID . "_be"; //base end
    $findHospital = "no";
    $hospitalReachTime = 0;
    $hospitalLat = 0;
    $hospitalLng = 0;
    $hospitalName = "";
    $hospitalDepartTime = 0;
    $tempgeozone = "";
    $tempZoneArrivelTime = "";
    $sceneCrossed = "no";
    for ($zindx = 0;$zindx < count($caseData);$zindx++) {
         /* 
            if Back to base  found 
            valid arrivel when depart found.
         */
   
        if ($caseData[$zindx][4] == "61968" && $unclosedCases[$caseindx][5] == "0" &&   $unclosedCases[$caseindx][6] != "0" && $unclosedCases[$caseindx][11] != "0" && $unclosedCases[$caseindx][12] != "0" && strtolower($caseData[$zindx][0]) == $zoneID2) {

            $diffbetweenbasedeparttobasearrivel=abs($unclosedCases[$caseindx][6]-$caseData[$zindx][1]);

            /*
              valid base arrivel if time  betwwen base arrivel and depart event is more then 15 mints
            */ 
          //  if($diffbetweenbasedeparttobasearrivel>300){
                if ($unclosedCases[$caseindx][9] != "0" && $unclosedCases[$caseindx][9] >= $caseData[$zindx][1]) {
                    continue;
                 } //ignore if base arrival less than scene arrival
                 if ($unclosedCases[$caseindx][10] != "0" && $unclosedCases[$caseindx][10] >= $caseData[$zindx][1]) {
                    continue;
                 } //ignore if base arrival less than scene depart
                 if ($unclosedCases[$caseindx][11] != "0" && $unclosedCases[$caseindx][11] >= $caseData[$zindx][1]) {
                     continue;
                  } //ignore if base arrival less than hsptl arrival
                 if ($unclosedCases[$caseindx][12] != "0" && $unclosedCases[$caseindx][12] >= $caseData[$zindx][1]) {
                    continue;
                 } //ignore if base arrival less than hsptl depart
                if ($unclosedCases[$caseindx][6] != "0" && $unclosedCases[$caseindx][6] >= $caseData[$zindx][1]) {
                    continue;
                 } //ignore if base arrival less than base depart
                 //check assigned base to vehicle or not
                 $tempgeozone = $caseData[$zindx][0];
                 $tempZoneArrivelTime = $caseData[$zindx][1];
                 $speed = $caseData[$zindx][5];
                 $caseAssignTime = $fromDate;
                 //Back to base Fo
                $result = getCaseDistance($tempaccountID, $deviceID, $fromDate, $tempZoneArrivelTime, $server);
                $caseDistsplit = explode('*', $result);
                $distance = $caseDistsplit[0];
                $offlineTime = $caseDistsplit[7];
                $offlineStus = "false";
                if ($offlineTime > 600) { //more than 10 minits
                    $offlineStus = "true";
                }
                $data = array("zoneType" => "baseLocation", "caseID" => $caseID, "accountID" => $accountID, "alertType" => 'Arrived', "geozoneID" => $tempgeozone, "triggerTime" => $tempZoneArrivelTime, "speed" => $speed, "distance" => $distance, "offlineStatus" => $offlineStus, "latitude" => $caseData[$zindx][2], "longitude" => $caseData[$zindx][3]);
                $unclosedCases[$caseindx][5] = $tempZoneArrivelTime;
                // var_dump($data);
                callService($data, $cluster);
                $baseArrivalLatLng = $caseData[$zindx][2] . "/" . $caseData[$zindx][3];
                updateCaseStatus($accountID, $caseID, $tempZoneArrivelTime, "arrived", $baseArrivalLatLng, $deviceID);
                deletetzones($tempaccountID,$caseID, $deviceID);

          // }
        }
          /*

              if base start found
          */
 /*
        if ($caseData[$zindx][4] == "62000" && $unclosedCases[$caseindx][6] == "0" && strtolower($caseData[$zindx][0]) == $zoneID) {
            //check event before scene , hospitla and base arrivel
            if ($unclosedCases[$caseindx][9] != "0" && $unclosedCases[$caseindx][9] <= $caseData[$zindx][1]) {
                continue;
            } //ignore if base depart more than scene arrival
            if ($unclosedCases[$caseindx][10] != "0" && $unclosedCases[$caseindx][10] <= $caseData[$zindx][1]) {
                continue;
            } //ignore if base depart more than scene depart
            if ($unclosedCases[$caseindx][11] != "0" && $unclosedCases[$caseindx][11] <= $caseData[$zindx][1]) {
                continue;
            } //ignore if base depart more than hsptl arrival
            if ($unclosedCases[$caseindx][12] != "0" && $unclosedCases[$caseindx][12] <= $caseData[$zindx][1]) {
                continue;
            } //ignore if base depart more than hsptl depart
            if ($unclosedCases[$caseindx][5] != "0" && $unclosedCases[$caseindx][5] <= $caseData[$zindx][1]) {
                continue;
            } //ignore if base depart more than base arrival
            //check assigned base to vehicle or not
            $tempgeozone = $caseData[$zindx][0];
            $tempZoneDepartTime = $caseData[$zindx][1];
            $speed = $caseData[$zindx][5];
            $caseAssignTime = $fromDate;

            $result = getCaseDistance($tempaccountID, $deviceID, $fromDate, $tempZoneArrivelTime, $server);
            $caseDistsplit = explode('*', $result);
            $distance = $caseDistsplit[0];
            $offlineTime = $caseDistsplit[7];
            $offlineStus = "false";
            if ($offlineTime > 600) { //more than 10 minits
                $offlineStus = "true";
            }

            $data = array("zoneType" => "baseLocation", "caseID" => $caseID, "accountID" => $accountID, "alertType" => 'Depart', "geozoneID" => $tempgeozone, "triggerTime" => $tempZoneDepartTime, "speed" => $speed, "distance" => $distance, "offlineStatus" => $offlineStus, "latitude" => $caseData[$zindx][2], "longitude" => $caseData[$zindx][3]);
            callService($data, $cluster);
            $unclosedCases[$caseindx][6] = $tempZoneDepartTime;
            $baseDepartLatLng = $caseData[$zindx][2] . "/" . $caseData[$zindx][3];
            updateCaseStatus($accountID, $caseID, $tempZoneDepartTime, "departed", $baseDepartLatLng, $deviceID);
        }
     */
    }
    

    /*
          if Base depart not found 
          then chech vehicle move 100m from case assign time 
          if moved  noted based depart

    */
    if ($unclosedCases[$caseindx][6] == "0") {
            $result = getCaseDistance($tempaccountID, $deviceID, $fromDate, time(), $server);
            $caseDistsplit = explode('*', $result);
            $distance = $caseDistsplit[0];
            if($distance!="" && ($distance*1000)>=100){
  
                $endlat = $caseDistsplit[3];
                $endlng = $caseDistsplit[4];
                $currenteventtime = $caseDistsplit[6];
                $offlineTime = $caseDistsplit[7];
                $offlineStus = "false";
                if ($offlineTime > 600) { //more than 10 minits
                   $offlineStus = "true";
                }
                $data = array("zoneType" => "baseLocation", "caseID" => $caseID, "accountID" => $accountID, "alertType" => 'Depart', "geozoneID" => '', "triggerTime" => $currenteventtime, "speed" => "0", "distance" =>$distance, "offlineStatus" => $offlineStus, "latitude" => $endlat, "longitude" => $endlng);
               callService($data, $cluster);
               $baseDepartLatLng = $endlat. "/" . $endlng;
               updateCaseStatus($accountID, $caseID, $currenteventtime, "departed", $baseDepartLatLng, $deviceID);

                $scenearray = explode('/', $scenelatlng);
                $basearray = explode('/',$basestartlatlng);
                if($scenearray[0]!="0.0" && $scenearray[1]!="0.0" && $basearray[0]!="0.0" && $basearray[1]!="0.0"){
                        $distancebetweenbasetoscene= distance1($scenearray[0], $scenearray[1], $basearray[0], $basearray[1]);
                        $distancebetweenbasetosceneinmeters=$distancebetweenbasetoscene*1000;
                        /*
                          Base location of the ambulance is same as the Hospital location then, Hospital departure time will be consider same as Hospital arrival time (For not moving).
                        */
                    if($distancebetweenbasetosceneinmeters<1000){
                          $data = array("zoneType" => "scene", "caseID" => $caseID, "accountID" => $accountID, "alertType" => 'Arrived', "geozoneID" => '', "triggerTime" => $currenteventtime, "speed" => "0", "distance" =>$distance, "offlineStatus" => $offlineStus, "latitude" => $endlat, "longitude" => $endlng);
                        callService($data, $cluster);
                        $sceneReachLatLng = $endlat. "/" . $endlng;
                        updateSceneStatus($accountID,$caseID,$currenteventtime,"arrived",$sceneReachLatLng,$deviceID);
                    }
                  }

           }

    }
    unset($caseData);
}



function getCaseEvents($accountID, $deviceID, $fromDate, $toDate, $server, $caseID, $basestartlatlng, $baseendlatlng,$basedepartfound) {
    global $gtsusername, $gtspassword, $gtsdb, $apiname, $gtsserver, $LiveEventDBserver, $basestartradius, $baseendradius;
    $currentTime = time();
    $difftime1 = $currentTime - $fromDate;
    $difftime2 = $currentTime - $toDate;
    $zoneID = $caseID . "_" . $deviceID . "_bs"; //base start
    $zoneID2 = $caseID . "_" . $deviceID . "_be"; //base end
    $gtsconnect = mysqli_connect($server, $gtsusername, $gtspassword) or die("Unable to connect to gtsdb: " . mysqli_error($gtsconnect));
    mysqli_select_db($gtsconnect, $gtsdb);
    $eventData = array(array());
    $Query = " SELECT heading, geozoneID,timestamp,deviceID,FROM_UNIXTIME(timestamp) as 'time1',speedKPH,address,odometerKM+odometerOffsetKM as 'distance',statusCode,analog0,latitude,longitude FROM `EventData` where accountID='$accountID' and deviceID='$deviceID'  and  timestamp between '$fromDate' and '$toDate'  order by timestamp asc "; //request from web for particular vehicle
    $qry_result = mysqli_query($gtsconnect, $Query) or die(mysqli_error($gtsconnect));
     $selectedzone=$zoneID;
    $selectedzonelatlng=$basestartlatlng;
    $radius=$basestartradius;
    if($basedepartfound=="yes"){
        $selectedzone=$zoneID2;
        $selectedzonelatlng=$baseendlatlng;
        $radius=$baseendradius;
    }
    $i = 0;
    $res = explode('/', $selectedzonelatlng);
    while ($row = mysqli_fetch_assoc($qry_result)) {
            $dis = distance1($res[0], $res[1], $row['latitude'], $row['longitude']);
            $disinmeters = $dis * 1000;
             if ($disinmeters < $radius) {
                        $eventData[$i][0] = $selectedzone;
                        $eventData[$i][1] = $row['timestamp'];
                        $eventData[$i][2] = $row['latitude'];
                        $eventData[$i][3] = $row['longitude'];
                        $eventData[$i][4] = $row['statusCode'];
                        $eventData[$i][5] = $row['speedKPH'];
                        $found = "yes";
                        $i++;
                        break;
             }
           
    }

    mysqli_close($gtsconnect);
    return $eventData;
}

/*
function getCaseEvents($accountID, $deviceID, $fromDate, $toDate, $server, $caseID, $basestartlatlng, $baseendlatlng,$basedepartfound) {
    global $gtsusername, $gtspassword, $gtsdb, $apiname, $gtsserver, $LiveEventDBserver, $basestartradius, $baseendradius;
    $currentTime = time();
    $difftime1 = $currentTime - $fromDate;
    $difftime2 = $currentTime - $toDate;
    $zoneID = $caseID . "_" . $deviceID . "_bs"; //base start
    $zoneID2 = $caseID . "_" . $deviceID . "_be"; //base end
    $gtsconnect = mysqli_connect($server, $gtsusername, $gtspassword) or die("Unable to connect to gtsdb: " . mysqli_error($gtsconnect));
    mysqli_select_db($gtsconnect, $gtsdb);
    $eventData = array(array());
    $Query = " SELECT heading, geozoneID,timestamp,deviceID,FROM_UNIXTIME(timestamp) as 'time1',speedKPH,address,odometerKM+odometerOffsetKM as 'distance',statusCode,analog0,latitude,longitude FROM `EventData` where accountID='$accountID' and deviceID='$deviceID'  and  timestamp between '$fromDate' and '$toDate' and statusCode in ('62000','61968')  order by timestamp asc "; //request from web for particular vehicle
    $qry_result = mysqli_query($gtsconnect, $Query) or die(mysqli_error($gtsconnect));
     $selectedzone=$zoneID;
    $selectedzonelatlng=$basestartlatlng;
    $radius=$basestartradius;
    if($basedepartfound=="yes"){
        $selectedzone=$zoneID2;
        $selectedzonelatlng=$baseendlatlng;
        $radius=$baseendradius;
    }
    $i = 0;
    while ($row = mysqli_fetch_assoc($qry_result)) {
        if (strtolower($row['geozoneID']) == strtolower($zoneID) || strtolower($row['geozoneID']) == strtolower($zoneID2)) {
            $eventData[$i][0] = $row['geozoneID'];
            $eventData[$i][1] = $row['timestamp'];
            $eventData[$i][2] = $row['latitude'];
            $eventData[$i][3] = $row['longitude'];
            $eventData[$i][4] = $row['statusCode'];
            $eventData[$i][5] = $row['speedKPH'];
            $i++;
        } else {
                $res = explode('/', $selectedzonelatlng);
                if ($res[0] != "" && $res[0] != "0.0" && $res[0] != "0") {
                    $dis = distance1($res[0], $res[1], $row['latitude'], $row['longitude']);
                    $disinmeters = $dis * 1000;
                    //if ( $disinmeters > $radius-50 && $disinmeters < $radius) {
                    if ($disinmeters < $radius) {
                        $eventData[$i][0] = $selectedzone;
                        $eventData[$i][1] = $row['timestamp'];
                        $eventData[$i][2] = $row['latitude'];
                        $eventData[$i][3] = $row['longitude'];
                        $eventData[$i][4] = $row['statusCode'];
                        $eventData[$i][5] = $row['speedKPH'];
                        $found = "yes";
                        $i++;
                    }
                }
        }
    }

    mysqli_close($gtsconnect);
    return $eventData;
}*/
function updateCaseStatus($accountID, $caseID, $time, $alerttype, $latlng, $deviceID) {
    global $tacserver, $tacusername, $tacpassword, $tacdb, $LiveEventDBserver;
    $tacconnect = mysqli_connect($LiveEventDBserver, $tacusername, $tacpassword) or die("Unable to connect to the database1 : " . mysqli_error($tacconnect));
    mysqli_select_db($tacconnect, $tacdb);
    $updatequery = "";
    $qry = "update caseManagerNew set caseStatus='close',caseCloseTime='$time',baseArrivedTime='$time',baseReachLatLng='$latlng' where accountID='$accountID' and deviceID='$deviceID' and caseID='$caseID'";
    if ($alerttype == "departed") {
        $qry = "update caseManagerNew set baseDepartedTime='$time',baseDepartLatLng='$latlng' where accountID='$accountID' and deviceID='$deviceID' and caseID='$caseID'";
    }
    //error_log($updatequery);
    mysqli_query($tacconnect, $qry) or die(mysqli_error($tacconnect));
    //echo $updatequery;
    mysqli_close($tacconnect);
}

function deletetzones($accountID,$caseID, $deviceID) {
    global $tacserver, $gtsusername, $gtspassword, $gtsdb, $LiveEventDBserver, $LiveGTS;
    $gtsconnect = mysqli_connect($LiveGTS, $gtsusername, $gtspassword) or die("Unable to connect to the database1 : " . mysqli_error($gtsconnect));
    mysqli_select_db($gtsconnect, $gtsdb);
    $basestart = strtolower($caseID . "_" . $deviceID . "_bs");
    $baseend = strtolower($caseID . "_" . $deviceID . "_be");
    $scene = strtolower($caseID . "_" . $deviceID . "_se");
    $hsptl = strtolower($caseID . "_" . $deviceID . "_hp");
    $deleteqry = "delete from Geozone where accountID='$accountID' and  geozoneID in ('$basestart','$baseend','$scene','$hsptl')";
    mysqli_query($gtsconnect, $deleteqry) or die(mysqli_error($gtsconnect));
    mysqli_close($gtsconnect);
}

function updateSceneStatus($accountID, $caseID, $time, $alerttype, $latlng, $deviceID) {
    global $tacserver, $tacusername, $tacpassword, $tacdb, $LiveEventDBserver;
    $tacconnect = mysqli_connect($LiveEventDBserver, $tacusername, $tacpassword) or die("Unable to connect to the database1 : " . mysqli_error($tacconnect));
    mysqli_select_db($tacconnect, $tacdb);
    $updatequery = "";
    $qry = "update caseManagerNew set sceneReachTimestamp='$time',SceneReachLatLng='$latlng' where accountID='$accountID' and deviceID='$deviceID' and caseID='$caseID'";
    mysqli_query($tacconnect, $qry) or die(mysqli_error($tacconnect));
    mysqli_close($tacconnect);
}

function updateQueuetoAssign($accountID, $caseID, $deviceID, $caseTime) {
    global $tacserver, $tacusername, $tacpassword, $tacdb, $LiveEventDBserver;
    $tacconnect = mysqli_connect($LiveEventDBserver, $tacusername, $tacpassword) or die("Unable to connect to the database1 : " . mysqli_error($tacconnect));
    mysqli_select_db($tacconnect, $tacdb);
    $qry = "update caseManagerNew set caseStatus='assigned' where accountID='$accountID' and deviceID='$deviceID' and caseStatus='queue' and caseTimestamp>$caseTime";
    //error_log($updatequery);
    mysqli_query($tacconnect, $qry) or die(mysqli_error($tacconnect));
    //echo $updatequery;
    mysqli_close($tacconnect);
}
function updateBaseStatus($accountID, $caseID, $deviceID) {
    global $tacserver, $tacusername, $tacpassword, $tacdb, $LiveEventDBserver;
    $tacconnect = mysqli_connect($LiveEventDBserver, $tacusername, $tacpassword) or die("Unable to connect to the database1 : " . mysqli_error($tacconnect));
    mysqli_select_db($tacconnect, $tacdb);
    $updatequery = "";
    $qry = "update caseManagerNew set baseStatus='1' where accountID='$accountID' and deviceID='$deviceID' and caseID='$caseID'";
    //error_log($updatequery);
    mysqli_query($tacconnect, $qry) or die(mysqli_error($tacconnect));
    //echo $updatequery;
    mysqli_close($tacconnect);
}
function getUnclosedCases($accountID) {
    global $tacserver, $tacusername, $tacpassword, $tacdb, $LiveEventDBserver, $caseCheckingTime;
    $tacconnect = mysqli_connect($LiveEventDBserver, $tacusername, $tacpassword) or die("Unable to connect to the database1 : " . mysqli_error($tacconnect));
    mysqli_select_db($tacconnect, $tacdb);
    $updatequery = "";
  //  $selectQuery = "select baselatlng,backtobaselatlng,cluster,baseStatus,caseType,sceneETA,sceneReachTimestamp,sceneDepartTimestamp,destinationReachTimestamp1,destinationDepartTimestamp1,caseCloseTime,caseStatus,destinationLatitude1,destinationLongitude1,caseID,caseTimestamp,deviceID,baseDepartedTime,baseArrivedTime,hospitalReachTime,hospitalDepartTime,hsptlETA  from caseManagerNew where accountID='$accountID'  and caseID <> '' and  (UNIX_TIMESTAMP(NOW())-caseTimestamp)<$caseCheckingTime and caseStatus in ('assigned') and (baseArrivedTime=0 or baseDepartedTime=0)";

     $nowtime=time();
    $selectQuery = "select incidentLatitude,incidentLongitude,baselatlng,backtobaselatlng,cluster,baseStatus,caseType,sceneETA,sceneReachTimestamp,sceneDepartTimestamp,destinationReachTimestamp1,destinationDepartTimestamp1,caseCloseTime,caseStatus,destinationLatitude1,destinationLongitude1,caseID,caseTimestamp,deviceID,baseDepartedTime,baseArrivedTime,hospitalReachTime,hospitalDepartTime,hsptlETA  from caseManagerNew where accountID='$accountID'  and caseID <> '' and  ((($nowtime-caseTimestamp)<$caseCheckingTime and caseType='emergency') or (($nowtime-caseTimestamp)<86400 and caseType='ift'))  and  caseStatus in ('assigned') and (baseArrivedTime=0 or baseDepartedTime=0)";

    $selectQuery = "select * from caseManagerNew where accountID='$accountID'  and caseID <> '' and  caseTimestamp > 1666117800 and caseTimestamp<1666132200 and caseStatus='close' and hospitalReachTime<>0 and hospitalDepartTime<>0 ";  
    $qry_result = mysqli_query($tacconnect, $selectQuery) or die(mysqli_error($tacconnect));
    $caseInfomation = array(array());
    $i = 0;
    while ($row = mysqli_fetch_assoc($qry_result)) {
        $caseInfomation[$i][0] = $row["caseID"];
        $caseInfomation[$i][1] = $row["deviceID"];
        $caseInfomation[$i][2] = $row["caseTimestamp"];
        $caseInfomation[$i][3] = $row["destinationLatitude1"];
        $caseInfomation[$i][4] = $row["destinationLongitude1"];
        $caseInfomation[$i][5] = $row["baseArrivedTime"];;
        $caseInfomation[$i][6] = $row["baseDepartedTime"];;
        $caseInfomation[$i][7] = $row["caseCloseTime"];
        $caseInfomation[$i][8] = $row["caseStatus"];
        $caseInfomation[$i][9] = $row["sceneReachTimestamp"];;
        $caseInfomation[$i][10] = $row["sceneDepartTimestamp"];;
        $caseInfomation[$i][11] = $row["hospitalReachTime"];;
        $caseInfomation[$i][12] = $row["hospitalDepartTime"];;
        $caseInfomation[$i][13] = ($row["sceneETA"] == "" ? 0 : $row["sceneETA"]);
        $caseInfomation[$i][14] = $row["caseType"];
        $caseInfomation[$i][15] = $row["baseStatus"];
        $caseInfomation[$i][16] = $row["hsptlETA"];
        $caseInfomation[$i][17] = $row["cluster"];
        $caseInfomation[$i][18] = $row["baselatlng"];
        $caseInfomation[$i][19] = $row["backtobaselatlng"];
        $caseInfomation[$i][20] = $row["incidentLatitude"]."/".$row["incidentLongitude"];
        
        $i++;
    }
    //error_log($updatequery);
    mysqli_close($tacconnect);
    return $caseInfomation;
}
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;
        return $miles * 1.609344;
    }
}
function getStartingEvent($accountID, $deviceID, $fromDate, $toDate, $server) {
    global $gtsusername, $gtspassword, $gtsdb, $apiname, $gtsserver, $LiveEventDBserver;
    $currentTime = time();
    $difftime1 = $currentTime - $fromDate;
    $difftime2 = $currentTime - $toDate;
    //   if( $difftime1<11700 || $difftime2<11700){
    // request for before 3 hours 15 mts data go to production server
    //      $gtsserver=$LiveEventDBserver;
    //  }
    $gtsconnect = mysqli_connect($server, $gtsusername, $gtspassword) or die("Unable to connect to gtsdb: " . mysqli_error($gtsconnect));
    mysqli_select_db($gtsconnect, $gtsdb);
    $eventData = array(array());
    $Query = " SELECT heading, geozoneID,timestamp,deviceID,FROM_UNIXTIME(timestamp) as 'time1',speedKPH,address,odometerKM+odometerOffsetKM as 'distance',statusCode,analog0,latitude,longitude FROM `EventData` where accountID='$accountID' and deviceID='$deviceID'  and  timestamp between '$fromDate' and '$toDate' order by timestamp asc  limit 1"; //request from web for particular vehicle
    $qry_result = mysqli_query($gtsconnect, $Query) or die(mysqli_error($gtsconnect));
    $i = 0;
    while ($row = mysqli_fetch_assoc($qry_result)) {
        $eventData[0] = $row['address'];
        $eventData[1] = $row['timestamp'];
        $eventData[2] = $row['latitude'];
        $eventData[3] = $row['longitude'];
        $eventData[4] = $row['statusCode'];
        $eventData[5] = $row['speedKPH'];
        $i++;
    }
    if ($i == 0) {
        $eventData[0] = "nodata";
    }
    mysqli_close($gtsconnect);
    return $eventData;
}
?>
