File: /var/www/html/dashboard.orbiwheels.com/app/Http/Controllers/Api/Transporter/DashboardController.php
<?php
namespace App\Http\Controllers\Api\Transporter;
use App\Http\Controllers\Controller;
use App\Models\BookingRide;
use App\Models\Driver;
use App\Models\Vehicle;
use Illuminate\Http\Request;
class DashboardController extends Controller
{
public function dashboard(Request $request)
{
try {
$transporter = auth('transporter-api')->user();
if (!$transporter) {
return response()->json([
'status' => false,
'message' => 'Unauthorized'
], 401);
}
$transporterId = $transporter->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();
$allDrivers = Driver::where('transporter_id', $transporterId)
->where('is_verified', 1)
->count();
$allVehicles = Vehicle::where('transporter_id', $transporterId)
->where('is_verified', 1)
->count();
return response()->json([
'status' => true,
'message' => 'Dashboard data fetched successfully',
'data' => [
'drivers' => $allDrivers,
'vehicles' => $allVehicles,
'pending_rides' => $pendingRide,
'ongoing_rides' => $ongoingRide,
'completed_rides' => $completeRide,
'cancelled_rides' => $cancelledRide,
]
], 200);
} catch (\Exception $e) {
return response()->json([
'status' => false,
'message' => 'Something went wrong',
'error' => $e->getMessage(),
], 500);
}
}
public function getAllDriver(Request $request)
{
try {
$transporter = auth('transporter-api')->user();
$drivers = Driver::with('documents')
->where('transporter_id', $transporter->id)
->where('is_verified', 1)
->where('mode', 1) // only online
->orderBy('id', 'desc')
->get();
return response()->json([
'status' => true,
'message' => 'All drivers fetched successfully.',
'data' => $drivers
]);
} catch (\Exception $e) {
return response()->json([
'status' => false,
'message' => 'Failed to fetch drivers: ' . $e->getMessage()
], 500);
}
}
public function getDriverDetail(Request $request, $driverId)
{
try {
$transporter = auth('transporter-api')->user();
$driver = Driver::with('documents')
->where('transporter_id', $transporter->id)
->where('is_verified', 1)
->where('mode', 1) // only online
->where('id', $driverId)
->first();
if (!$driver) {
return response()->json([
'status' => false,
'message' => 'Driver not found or does not belong to you.'
], 404);
}
return response()->json([
'status' => true,
'message' => 'Driver details fetched successfully.',
'data' => $driver
]);
} catch (\Exception $e) {
return response()->json([
'status' => false,
'message' => 'Failed to fetch driver details: ' . $e->getMessage()
], 500);
}
}
public function getAllVehicle(Request $request)
{
try {
$transporter = auth('transporter-api')->user();
$vehicles = Vehicle::with('documents')
->where('transporter_id', $transporter->id)
->orderBy('id', 'desc')
->get();
return response()->json([
'status' => true,
'message' => 'All vehicles fetched successfully.',
'data' => $vehicles
]);
} catch (\Exception $e) {
return response()->json([
'status' => false,
'message' => 'Failed to fetch vehicles: ' . $e->getMessage()
], 500);
}
}
public function getVehicleDetail(Request $request, $vehicleId)
{
try {
$transporter = auth('transporter-api')->user();
$vehicle = Vehicle::where('transporter_id', $transporter->id)
->where('id', $vehicleId)
->first();
if (!$vehicle) {
return response()->json([
'status' => false,
'message' => 'Vehicle not found or does not belong to you.'
], 404);
}
return response()->json([
'status' => true,
'message' => 'Vehicle details fetched successfully.',
'data' => $vehicle
]);
} catch (\Exception $e) {
return response()->json([
'status' => false,
'message' => 'Failed to fetch vehicle details: ' . $e->getMessage()
], 500);
}
}
}