<?php
|
|
namespace App\Jobs;
|
|
|
|
use DB, Log;
|
|
use App\Jobs\Job;
|
|
use Illuminate\Contracts\Bus\SelfHandling;
|
|
use Illuminate\Contracts\Queue\ShouldQueue;
|
|
use DateTime, DateTimeZone;
|
|
|
|
class NotifyOfNewLocations extends Job implements SelfHandling, ShouldQueue
|
|
{
|
|
private $_dbid;
|
|
|
|
public function __construct($dbid) {
|
|
$this->_dbid = $dbid;
|
|
}
|
|
|
|
public function handle() {
|
|
$db = DB::table('databases')->where('id','=',$this->_dbid)->first();
|
|
$urls = preg_split('/\s+/', $db->ping_urls);
|
|
|
|
$location = [
|
|
'location' => json_decode($db->last_location, true)
|
|
];
|
|
|
|
if($db->current_trip)
|
|
$location['trip'] = json_decode($db->current_trip, true);
|
|
|
|
$location = json_encode($location, JSON_UNESCAPED_SLASHES);
|
|
|
|
foreach($urls as $url) {
|
|
if(trim($url)) {
|
|
$ch = curl_init($url);
|
|
curl_setopt($ch, CURLOPT_POST, true);
|
|
curl_setopt($ch, CURLOPT_HTTPHEADER, [
|
|
'Content-Type: application/json',
|
|
'Authorization: Bearer '.$db->read_token,
|
|
'Compass-Url: '.env('BASE_URL').'api/last?token='.$db->read_token.'&geocode=1'
|
|
]);
|
|
curl_setopt($ch, CURLOPT_POSTFIELDS, $location);
|
|
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
|
|
curl_exec($ch);
|
|
$timestamp = '';
|
|
if($db->last_location) {
|
|
$timestamp = json_decode($db->last_location)->properties->timestamp;
|
|
}
|
|
Log::info("Notifying ".$url." with current location: ".$timestamp);
|
|
}
|
|
}
|
|
}
|
|
}
|