table('driver')->count(); $activeDrivers = DB::connection('ride')->table('driver')->where('status', 'notDeleted')->count(); $totalPassengers = DB::connection('primary')->table('passengers')->count(); $activePassengers = DB::connection('primary')->table('passengers')->where('status', 'notDeleted')->count(); $totalRides = DB::connection('ride')->table('ride')->count(); $finishedRides = DB::connection('ride')->table('ride')->where('status', 'finish')->count(); $todayRides = DB::connection('ride')->table('ride') ->where('status', 'finish')->whereDate('rideTimeFinish', today())->count(); $todayRevenue = DB::connection('ride')->table('ride') ->where('status', 'finish')->whereDate('rideTimeFinish', today()) ->sum('price_for_passenger'); $onlineDrivers = DB::connection('tracking')->table('car_locations') ->where('status', 'on')->where('updated_at', '>', now()->subMinutes(10))->count(); return response()->json([ 'status' => 'success', 'data' => [ 'drivers' => ['total' => $totalDrivers, 'active' => $activeDrivers, 'online' => $onlineDrivers], 'passengers' => ['total' => $totalPassengers, 'active' => $activePassengers], 'rides' => ['total' => $totalRides, 'finished' => $finishedRides, 'today' => $todayRides], 'revenue' => ['today' => round($todayRevenue, 2)], ], ]); } /** GET /v2/admin/stats/rides?from=2026-01-01&to=2026-04-22 */ public function rides(Request $request): JsonResponse { $from = $request->input('from', today()->subDays(30)->toDateString()); $to = $request->input('to', today()->toDateString()); $daily = DB::connection('ride')->table('ride') ->selectRaw("DATE(rideTimeFinish) as date, COUNT(*) as count, SUM(price_for_passenger) as revenue") ->where('status', 'finish') ->whereBetween('rideTimeFinish', [$from . ' 00:00:00', $to . ' 23:59:59']) ->groupByRaw('DATE(rideTimeFinish)') ->orderBy('date') ->get(); return response()->json(['status' => 'success', 'data' => $daily]); } /** GET /v2/admin/stats/drivers-monthly */ public function driversMonthly(): JsonResponse { $monthly = DB::connection('ride')->table('driver') ->selectRaw("DATE_FORMAT(created_at, '%Y-%m') as month, COUNT(*) as count") ->groupByRaw("DATE_FORMAT(created_at, '%Y-%m')") ->orderBy('month', 'desc') ->limit(12) ->get(); return response()->json(['status' => 'success', 'data' => $monthly]); } /** GET /v2/admin/stats/employees */ public function employees(): JsonResponse { $employees = DB::connection('ride')->table('employee') ->select('id', 'name', 'phone', 'status', 'created_at') ->orderBy('created_at', 'desc') ->get(); return response()->json(['status' => 'success', 'data' => $employees]); } }