HEX
Server: Apache/2.4.58 (Ubuntu)
System: Linux ip-172-26-0-120 6.17.0-1009-aws #9~24.04.2-Ubuntu SMP Fri Mar 6 23:50:29 UTC 2026 x86_64
User: ubuntu (1000)
PHP: 8.3.6
Disabled: NONE
Upload Files
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'
        ]);
    }
}