|
Server : Apache/2.4.41 (Ubuntu) System : Linux vmi1525618.contaboserver.net 5.4.0-105-generic #119-Ubuntu SMP Mon Mar 7 18:49:24 UTC 2022 x86_64 User : www-data ( 33) PHP Version : 8.2.12 Disable Function : NONE Directory : /var/www/namascar_app/panel.namascar.app/app/Http/Controllers/ |
Upload File : |
<?php
namespace App\Http\Controllers;
use App\Models\Driver;
use App\Models\ParcelOrder;
use App\Models\UserApp;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\DB;
class ParcelMapController extends Controller
{
public function __construct()
{
$this->middleware('auth');
}
public function index()
{
$lat_long = $this->getDefaultLatLong();
return view('parcel_map.index')->with('lat_long', $lat_long);
}
public function getRideInfo(Request $request)
{
$rides = ParcelOrder::where('status', 'onride')->orwhere('status', 'confirmed')->orderBy('created_at', 'desc')->get();
$rides = $rides->toArray();
$drivers = $request->drivers;
$data = array();
if (isset($rides) && count($rides) > 0) {
foreach ($rides as $ride) {
$ride_info = ParcelOrder::find($ride['id']);
$user_info = '';
$userName = '';
$user_info = UserApp::find($ride['id_user_app']);
if (!empty($user_info)) {
$userName = $user_info->prenom . " " . $user_info->nom;
}
$driver_info = '';
if (array_key_exists('id_conducteur', $ride)) {
$driver_info = Driver::select(
'tj_conducteur.*',
'tj_vehicule.numberplate as car_number',
'tj_vehicule.car_make',
'brands.name as brand_name',
'car_model.name as car_model',
)
->join('tj_vehicule', 'tj_vehicule.id_conducteur', '=', 'tj_conducteur.id')
->join('tj_type_vehicule', 'tj_type_vehicule.id', '=', 'tj_vehicule.id_type_vehicule')
->leftjoin('brands', 'tj_vehicule.brand', '=', 'brands.id')
->leftjoin('car_model', 'tj_vehicule.model', '=', 'car_model.id')
->find($ride['id_conducteur']);
if (isset($drivers) && count($drivers) > 0) {
$ride['driver_latitude'] = '';
$ride['driver_longitude'] = '';
foreach ($drivers as $driver) {
if ($driver['driver_id'] == $ride['id_conducteur']) {
$ride['driver_latitude'] = $driver['driver_latitude'];
$ride['driver_longitude'] = $driver['driver_longitude'];
}
}
}
}
if ($ride_info && $driver_info && ($ride_info->status == "onride" || $ride_info->status == "confirmed")) {
$data[] = array(
'driver_id' => $ride['id_conducteur'],
'driver_name' => $driver_info->prenom . ' ' . $driver_info->nom,
'driver_mobile' => $driver_info->phone,
'vehicle_brand' => $driver_info->brand_name,
'vehicle_number' => $driver_info->car_number,
'vehicle_model' => $driver_info->car_model,
'vehicle_make' => $driver_info->car_make,
'user_id' => $ride['id_user_app'],
'user_name' => $userName,
'driver_latitude' => $ride['driver_latitude'],
'driver_longitude' => $ride['driver_longitude'],
//'rotation' => $ride['rotation'],
'doc_id' => $ride['id'],
'ride_id' => $ride['id'],
'ride_status' => $ride_info->status,
'depart_name' => $ride_info['source'],
'destination_name' => $ride_info['destination'],
'flag' => 'on_ride',
);
}
}
}
if (isset($drivers) && count($drivers) > 0) {
foreach ($drivers as $driver) {
$driver_info = Driver::select(
'tj_conducteur.*',
'tj_vehicule.numberplate as car_number',
'tj_vehicule.car_make',
'brands.name as brand_name',
'car_model.name as car_model',
)
->join('tj_vehicule', 'tj_vehicule.id_conducteur', '=', 'tj_conducteur.id')
->join('tj_type_vehicule', 'tj_type_vehicule.id', '=', 'tj_vehicule.id_type_vehicule')
->leftjoin('brands', 'tj_vehicule.brand', '=', 'brands.id')
->leftjoin('car_model', 'tj_vehicule.model', '=', 'car_model.id')
->find($driver['driver_id']);
if ($driver_info) {
$data[] = array(
'driver_id' => $driver['driver_id'],
'driver_name' => $driver_info->prenom . ' ' . $driver_info->nom,
'driver_mobile' => $driver_info->phone,
'vehicle_brand' => $driver_info->brand,
'vehicle_number' => $driver_info->car_number,
'vehicle_model' => $driver_info->car_model,
'vehicle_make' => $driver_info->car_make,
'driver_latitude' => $driver['driver_latitude'],
'driver_longitude' => $driver['driver_longitude'],
'flag' => 'available',
);
}
}
}
return response()->json($data);
}
public function getDefaultLatLong()
{
$sql = DB::table('tj_settings')->select('tj_settings.contact_us_address as address', 'tj_settings.google_map_api_key as apikey')->first();
$address = $sql->address;
$apiKey = $sql->apikey;
if (!empty($address) && !empty($apiKey)) {
$geo = file_get_contents('https://maps.googleapis.com/maps/api/geocode/json?address=' . urlencode($address) . '&sensor=false&key=' . $apiKey);
$geo = json_decode($geo, true);
$latlong = array();
if (isset($geo['status']) && $geo['status'] == 'OK') {
$latitude = $geo['results'][0]['geometry']['location']['lat'];
$longitude = $geo['results'][0]['geometry']['location']['lng'];
$latlong = array('lat' => $latitude, 'lng' => $longitude);
}
} else {
$latlong = array();
}
return $latlong;
}
}