File: /var/www/html/dashboard.orbiwheels.com/app/Http/Controllers/Transporter/HomeController.php
<?php
namespace App\Http\Controllers\Transporter;
use App\Http\Controllers\Controller;
use App\Models\Booking;
use App\Models\BookingRide;
use App\Models\Driver;
use App\Models\RideRequest;
use App\Models\Vehicle;
use Illuminate\Http\Request;
class HomeController extends Controller
{
public function index()
{
$transporterId = auth()->guard('trans')->user()->id;
$pendingRide = BookingRide::where('transporter_id', $transporterId)->where('status', BookingRide::PENDING)->count();
$ongoingRide = BookingRide::where('transporter_id', $transporterId)->where('status', BookingRide::ONGOING)->count();
$completeRide = BookingRide::where('transporter_id', $transporterId)->where('status', BookingRide::COMPLETED)->count();
$cancelledRide = BookingRide::where('transporter_id', $transporterId)->where('status', BookingRide::CANCELLED)->count();
$pendingBooking = Booking::where('transporter_id', $transporterId)->where('status', Booking::PENDING)->count();
$acceptedBooking = Booking::where('transporter_id', $transporterId)->where('status', Booking::ACCEPTED)->count();
$completeBooking = Booking::where('transporter_id', $transporterId)->where('status', Booking::COMPLETED)->count();
$cancelledBooking = Booking::where('transporter_id', $transporterId)->where('status', Booking::CANCELLED)->count();
$requestBookings = RideRequest::with('booking')->where('transporter_id', $transporterId)->where('status', RideRequest::PENDING)->latest()->get();
$drivers = Driver::where('transporter_id', $transporterId)->where('status', 'active')->where('is_verified', 1)->get();
$vehicles = Vehicle::where('transporter_id', $transporterId)->where('status', 'active')->where('is_verified', 1)->get();
$totalDrivers = $drivers->count();
$totalVehicles = $vehicles->count();
// Ongoing ride assigned drivers & vehicles
$ongoingDriverIds = BookingRide::where('transporter_id', $transporterId)->where('status', BookingRide::ONGOING)->pluck('driver_id')->unique();
$ongoingVehicleIds = BookingRide::where('transporter_id', $transporterId)->where('status', BookingRide::ONGOING)->pluck('vehicle_id')->unique();
$occupiedDriversCount = $ongoingDriverIds->count();
$occupiedVehiclesCount = $ongoingVehicleIds->count();
// Percentages
$driverOccupiedPercent = $totalDrivers > 0 ? round(($occupiedDriversCount / $totalDrivers) * 100) : 0;
$vehicleOccupiedPercent = $totalVehicles > 0 ? round(($occupiedVehiclesCount / $totalVehicles) * 100) : 0;
return view('transporter.index', compact([
'vehicles',
'drivers',
'pendingRide',
'completeRide',
'ongoingRide',
'cancelledRide',
'pendingBooking',
'acceptedBooking',
'completeBooking',
'cancelledBooking',
'requestBookings',
'driverOccupiedPercent',
'vehicleOccupiedPercent'
]));
}
public function updateMode(Request $request)
{
$request->validate([
'mode' => 'required|in:0,1',
]);
$transporter = auth('trans')->user();
$transporter->mode = $request->mode;
$transporter->save();
return response()->json([
'status' => true,
'message' => $request->mode == 1 ? 'You are now Online' : 'You are now Offline'
]);
}
}