<?php
    include "../config.php";
    date_default_timezone_set('Asia/Kolkata');
    error_reporting(0);
    $caseID='';
    $incidentLatitude='';
    $incidentLongitude='';
    $caseTimestamp='';
    $caseType='';
    $caseStatus='';
    $callerName='';
    $callerContact='';
    $formate='';
    $user='';
    $password='';
    $formate=$_POST['formate'];
    $user=$_POST['user'];
    $password=$_POST['password'];
    $response='';
    $jsonresponse='';
    error_log("New Case Arrived");
    //error_log($user."-".$password."-".$formate."-saicase1");
    if($user==$apiusername && $password==$apipassword){
        $accountID=$_POST['accountID'];
        $deviceID=$_POST['deviceID'];
        $caseID=$_POST['caseID'];
       // $incidentLatitude=$_POST['inlat'];
       // $incidentLongitude=$_POST['inlng'];
       // $caseTimestamp=$_POST['caseTimestamp'];
        //echo "timest".$caseTimestamp."  ".$caseID;
        $caseType=$_POST['caseType'];
        $caseStatus="assigned";
        $callerName=$_POST['callerName'];
        $callerContact=$_POST['callerContact'];




        $caseTimestamp = $_POST['assignedTime'];
        //$toDate = $_POST['tripEndTime'];
        $incidentLatitude=$_POST['sourceLatitude'];
        $incidentLongitude=$_POST['sourceLongitude'];
        $destLat1=$_POST['destinationLatitude1'];
        $destLng1=$_POST['destinationLongitude1'];
        $destLat2=$_POST['destinationLatitude2'];
        $destLng2=$_POST['destinationLongitude2'];
        $destLat3=$_POST['destinationLatitude3'];
        $destLng3=$_POST['destinationLongitude3'];
        $backLat=$_POST['baseLatitude'];
        $backLng=$_POST['baseLongitude'];
        $sourceDistrict=$_POST['sourceDistrict'];
        $sourceType=$_POST['sourceType'];
        $destinationType=$_POST['destinationType'];
        $destinationDistrict=$_POST['destinationDistrict'];

        //echo "timest".$caseTimestamp."  ".$caseID."  ".$caseType."  ".$callerName."  ".$incidentLongitude;
        insertIntoDevice($accountID,$deviceID,$caseID);//update case cased ID in Device Table Column smsEmail   
        if($deviceID!="" && $caseID!='' && $incidentLatitude!='' && $incidentLongitude!='' && $caseTimestamp!=''){
              $caseStartTime=0;
              try {
                  $tacconnect = mysqli_connect($LiveEventDBserver, $tacusername, $tacpassword) or die ("Unable to connect to the database : " . mysqli_error($tacconnect));
                  mysqli_select_db($tacconnect,$tacdb);
                  $myqry="SELECT * FROM caseManager WHERE deviceID='$deviceID' and caseID='$caseID'"; 
                  $result = mysqli_query($tacconnect,$myqry) or die(mysqli_error($tacconnect));;
                  $num_rows = mysqli_num_rows($result);
                  if($num_rows==0){
                  $caseTimestamp=strtotime($caseTimestamp); 
                  $caseType=str_replace("'"," ",$caseType);
                  $callerName=str_replace("'"," ",$callerName); 


                  //track server support https
                  $caseurl1="https://upemri.glovision.co/track/?cid=";
                  $caseurl2=$caseID."&acc=".$accountID;
                  //$caseurl2=$caseID."&ctime=".$caseTimestamp."&ctype=".$caseType."&cc=".$callerContact."&did=".$deviceID."&acc=".$accountID;
                  $search= array(" ", "-", "/","#","//","&");
                  $replace= array("%20", "%2D", "%2F","%23","%2F","%26");
                  $caseurl3= str_replace($search, $replace, $caseurl2);
                  $caseurl=$caseurl1.$caseurl3;
                  //$caseType=="referral";
                  $caseupdate="INSERT INTO caseManager (accountID,deviceID,caseID,incidentLatitude,incidentLongitude,caseTimestamp,caseType,caseStatus,caseDistance, callerName,callerContact,url,caseCloseTime,caseVehicleStatus,vehicleStatus) VALUES ('$accountID','$deviceID','$caseID','$incidentLatitude','$incidentLongitude','$caseTimestamp','$caseType','$caseStatus','0','$callerName','$callerContact','$caseurl','0','','')";
                  //echo $caseupdate;
                  $qry1 = mysqli_query($tacconnect,$caseupdate) or die(mysqli_error($tacconnect));
                  mysqli_close($tacconnect); 
                  $jsonresponse= '{"Status":"success","ReceivedTime":"'.date('d-M-Y h:i:s a',time()).'"}';
                  $callerName=str_replace(" ","%20",$callerName); 

                   /*
                        get Vehicle Live Location to Estimated distance
                   */ 
                   $gtsconnect = mysqli_connect($LiveEventDBserver,$gtsusername,$gtspassword) or die ("Unable to connect to the database1 : " . mysqli_error($gtsconnect));
                   mysqli_select_db($gtsconnect, $gtsdb);
                   $qry ="SELECT a.lastValidLatitude as lastValidLatitude,a.lastValidLongitude as lastValidLongitude,a.lastEventTimestamp as lastEventTimestamp,b.contactPhone as crewNumber FROM Device a,Driver b WHERE a.deviceID=b.driverID and a.deviceID='$deviceID' and a.accountID=b.accountID and a.accountID='$accountID' ";
                   $result= mysqli_query($gtsconnect,$qry) or die(mysqli_error($gtsconnect));
                   $lastValidLatitude=0;
                   $lastValidLongitude=0;
                   $lastEventTimestamp=0;
                   $crewNumber=0;
                   while ($row = mysqli_fetch_assoc($result)) {
                         $lastEventTimestamp= $row["lastEventTimestamp"];
                         $lastValidLatitude= $row["lastValidLatitude"];
                         $lastValidLongitude= $row["lastValidLongitude"];
                         $crewNumber=$row["crewNumber"];
                    }
                    mysqli_close($gtsconnect);
                    $estimateddis=distance1($lastValidLatitude,$lastValidLongitude,$incidentLatitude,$incidentLongitude);
                    $vehiclereachedin=round(floatval($estimateddis/45),2);
                    $vehiclereachedinexploded=explode('.',$vehiclereachedin);
                    $vehiclereachesin="expected time :".$vehiclereachedinexploded[0]."Hrs ".$vehiclereachedinexploded[1]."Mins";
                    $diff=$now-$lastEventTimestamp;
                    if($diff<600){
                        $msg="Dear ".$callerName.",Track the assigned ambulance ".$deviceID.", crew ".$crewNumber." ".$caseurl." ".$vehiclereachesin;

                       // $msg="प्रिय  ".$callerName." ,आपके लिए भेजी जा रही एम्बुलेंस की संख्या  ".$deviceID." एवं नंबर ".$crewNumber." है। एम्बुलेंस की स्थिति देखने के लिए  लिए$ के लिए $caseurl लिंक  पर क्लिक करें।अनुमानित समय : :$vhiclereachesin "; 
                    } else {
                        $msg="Dear ".$callerName.",The assigned CaseID is :".$q.". Ambulance is ".$deviceID.",crew is".$crewNumber.". ".$vehiclereachesin;
                     //   $msg="प्रिय  ".$callerName." ,आपके लिए भेजी जा रही एम्बुलेंस की संख्या  ".$deviceID." एवं नंबर ".$crewNumber." है। एम्बुलेंस अनुमानित समय : h$vehiclereachesin ";
                    }

                    $search= array(" ","#",",");
                    $replace= array("%20","%23","%2C");
                    $msgs= str_replace($search, $replace, $msg);
                    //$msgs=utf8_to_unicode($msgs);
                    /* Send Sms  to Caller*/
          //          $url2="http://api.smscountry.com/SMSCwebservice_bulk.aspx?User=gvk108&passwd=emri123&mobilenumber=";
                    $url2="http://smsw.co.in/API/WebSMS/Http/v1.0a/index.php?username=AMBUPW&password=HCKgqK&sender=AMBUPW&to=";
                    $url2.=$callerContact;
                    //$url2.=",9949123345";//gvk internal
                    //$url2.=",9866613362";//gvk internal
                   // $url2.="&sid=gvkemri108&mtype=N&DR=Y";
                    $url2.="&reqid=1&format={json|text}&unique=0";
                    $url2.="&message=".$msgs;
                    error_log($url2);
                    //$e['res'] = "true"; 
                    $curl = curl_init();
                    curl_setopt($curl, CURLOPT_URL, $url2);
                    curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
                    curl_setopt($curl, CURLOPT_HEADER, false);
                    // execute and return string (this should be an empty string '')
                    $str = curl_exec($curl);
                    curl_close($curl);
                    //echo $url2."<br>";
                    /*  end */

                  /* 
                  //send sms to Coller Number
                  $url=$_SERVER['SERVER_NAME']."/API/sendSMS.php?q=".$caseID."&callerName=".$callerName."&deviceID=".$deviceID."&callerContact=".$callerContact."&incidentLatitude=".$incidentLatitude."&incidentLongitude=".$incidentLongitude; 
                  $curl = curl_init();
                  curl_setopt($curl, CURLOPT_URL, $url);
                  curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
                  curl_setopt($curl, CURLOPT_HEADER, false);
                  $str = curl_exec($curl);
                  curl_close($curl);*/
                  }else{
                      $jsonresponse= '{"Status":"Fail:Duplicate entry '.$deviceID.'-'.$caseID.'","ReceivedTime":"'.date('d-M-Y h:i:s a',time()).'"}';
                      saveRequest($accountID,$deviceID,0,0,0,time(),'Fail:Duplicate entry '.$deviceID.'-'.$caseID,'New Case Arrived');
                  }
              }catch (Exception $e) {
                  $jsonresponse= '{"status":"Please Try later","ReceivedTime":"'.date('d-M-Y h:i:s a',time()).'"}';
                  saveRequest($accountID,$deviceID,0,0,0,time(),'Fail:Please Try later '.$deviceID.'-'.$caseID,'New Case Arrived');
              }
          }else{
              if($deviceID==""){
                  $jsonresponse= '{"Status":"Invalid records DeviceID is null","ReceivedTime":"'.date('d-M-Y h:i:s a',time()).'"}';
                  saveRequest($accountID,$deviceID,0,0,0,time(),'Fail:Invalid  DeviceID in '.$deviceID.'-'.$caseID,'New Case Arrived');
              }else if($caseID==''){
                  $jsonresponse= '{"Status":"Invalid records CaseID is null","ReceivedTime":"'.date('d-M-Y h:i:s a',time()).'"}';
                   saveRequest($accountID,$deviceID,0,0,0,time(),'Fail:Invalid records caseID in '.$deviceID.'-'.$caseID,'New Case Arrived');
              }else if( $incidentLatitude==''){
                  $jsonresponse= '{"Status":"Invalid recordslat is null","ReceivedTime":"'.date('d-M-Y h:i:s a',time()).'"}';
                   saveRequest($accountID,$deviceID,0,0,0,time(),'Fail:Invalid Lat in '.$deviceID.'-'.$caseID,'New Case Arrived');
              }else if($incidentLongitude==''){
                  $jsonresponse= '{"Status":"Invalid records long is null","ReceivedTime":"'.date('d-M-Y h:i:s a',time()).'"}';
                   saveRequest($accountID,$deviceID,0,0,0,time(),'Fail:Invalid records Lng in '.$deviceID.'-'.$caseID,'New Case Arrived');
              }else if( $caseTimestamp==''){
                  $jsonresponse= '{"Status":"Invalid records timestamp is null","ReceivedTime":"'.date('d-M-Y h:i:s a',time()).'"}';
                  saveRequest($accountID,$deviceID,0,0,0,time(),"Fail:Invalid case Time in $deviceID - $caseID",'New Case Arrived');
              }
          }
      }else{
          $jsonresponse='{"Status":"Invalid login Details","ReceivedTime":"'.date('d-M-Y h:i:s a',time()).'"}';
           saveRequest($accountID,$deviceID,0,0,0,time(),'Invalid login Details','New Case Arrived');
      }
      header('Content-Type: application/json');
      echo $jsonresponse;

      error_log("Case Assigned End");

      function insertIntoDevice($account,$device,$case) {
          global $tacserver, $gtsusername, $gtspassword,$gtsdb,$LiveEventDBserver;
          $gtsconnect = mysqli_connect($LiveEventDBserver,$gtsusername,$gtspassword) or die ("Unable to connect to the database1 : " . mysqli_error($gtsconnect));
          mysqli_select_db($gtsconnect, $gtsdb);
          $updatequery="update Device set smsEmail='$case' where accountID='$account' and deviceID='$device'";
          mysqli_query($gtsconnect,$updatequery) or die(mysqli_error($gtsconnect));
          mysqli_close($gtsconnect);
     }
  
    function utf8_to_unicode($str) {
$unicode = array();
$values = array();
$lookingFor = 1;
for ($i = 0; $i < strlen($str); $i++) {
    $thisValue = ord($str[$i]);
    if ($thisValue < 128) {
        $number = dechex($thisValue);
        $unicode[] = (strlen($number) == 1) ? '%u000' . $number : "%u00" . $number;
    } else {
        if (count($values) == 0)
            $lookingFor = ( $thisValue < 224 ) ? 2 : 3;
        $values[] = $thisValue;
        if (count($values) == $lookingFor) {
            $number = ( $lookingFor == 3 ) ?
                    ( ( $values[0] % 16 ) * 4096 ) + ( ( $values[1] % 64 ) * 64 ) + ( $values[2] % 64 ) :
                    ( ( $values[0] % 32 ) * 64 ) + ( $values[1] % 64
                    );
            $number = dechex($number);
            $unicode[] =
                    (strlen($number) == 3) ? "%u0" . $number : "%u" . $number;
            $values = array();
            $lookingFor = 1;
        } // if
    } // if
}
return implode("", $unicode);
}
?>
