@extends('admin.layout') @section('title', 'Riders') @section('content') {{-- -- PAGE HEADER -- --}} {{-- -- STAT CARDS -- --}} @php // Calculate real stats from database $totalRiders = $riders->count(); $onlineRiders = $riders->filter(fn($r) => $r->is_available && !$r->activeOrder())->count(); $onDeliveryRiders = $riders->filter(fn($r) => $r->activeOrder() && in_array($r->activeOrder()->status, ['rider_assigned', 'out_for_delivery']))->count(); $offlineRiders = $totalRiders - $onlineRiders - $onDeliveryRiders; $deliveriesToday = \App\Models\Order::where('status', 'delivered')->whereDate('delivered_at', today())->count(); $riderStats = [ ['label'=>'Total Riders', 'value'=>$totalRiders, 'sub'=>'Registered riders', 'icon'=>'users', 'color'=>'#f59e0b','bg'=>'rgba(245,158,11,.10)'], ['label'=>'Online Now', 'value'=>$onlineRiders, 'sub'=>'Available for orders','icon'=>'circle-check', 'color'=>'#10b981','bg'=>'rgba(16,185,129,.10)'], ['label'=>'On Delivery', 'value'=>$onDeliveryRiders, 'sub'=>'Currently delivering','icon'=>'bike', 'color'=>'#8b5cf6','bg'=>'rgba(139,92,246,.10)'], ['label'=>'Offline', 'value'=>$offlineRiders, 'sub'=>'Not available', 'icon'=>'circle-x', 'color'=>'#6b7280','bg'=>'rgba(107,114,128,.10)'], ['label'=>'Deliveries Today','value'=>$deliveriesToday, 'sub'=>'Completed orders', 'icon'=>'package-check','color'=>'#3b82f6','bg'=>'rgba(59,130,246,.10)'], ]; @endphp
@foreach($riderStats as $s)
{{ $s['value'] }}

{{ $s['label'] }}

{{ $s['sub'] }}

@endforeach
{{-- -- LIVE RIDERS MAP -- --}}

Live Rider Map

{{ $onlineRiders + $onDeliveryRiders }} riders active
On Delivery Online / Available E.U.T Snack House
{{-- -- FILTER BAR -- --}}
Sample data — connect riders table to go live
{{-- -- RIDERS TABLE -- --}} @php $statusMap = [ 'online' => ['label'=>'Online', 'color'=>'#10b981','bg'=>'rgba(16,185,129,.12)','icon'=>'circle-check'], 'on_delivery' => ['label'=>'On Delivery', 'color'=>'#8b5cf6','bg'=>'rgba(139,92,246,.12)','icon'=>'bike'], 'offline' => ['label'=>'Offline', 'color'=>'#6b7280','bg'=>'rgba(107,114,128,.12)','icon'=>'circle-x'], ]; @endphp @foreach($riders as $rider) @php // Determine status based on is_available and active order $activeOrder = $rider->activeOrder(); if ($activeOrder && in_array($activeOrder->status, ['rider_assigned', 'out_for_delivery'])) { $currentStatus = 'on_delivery'; } else if ($rider->is_available) { $currentStatus = 'online'; } else { $currentStatus = 'offline'; } $st = $statusMap[$currentStatus]; // Skip riders with no linked user account if (!$rider->user) continue; // Get initials from name $nameParts = explode(' ', $rider->user->name); $initials = ''; foreach ($nameParts as $part) { $initials .= strtoupper(substr($part, 0, 1)); } $initials = substr($initials, 0, 2); // Get today's deliveries count $todayDeliveries = \App\Models\Order::where('rider_id', $rider->id) ->where('status', 'delivered') ->whereDate('delivered_at', today()) ->count(); @endphp @endforeach
Rider Phone Vehicle Status Current Order Today's Deliveries Rating Actions
{{ $initials }}

{{ $rider->user->name }}

Joined {{ $rider->created_at->format('M d, Y') }}

{{ $rider->phone }} {{ ucfirst($rider->vehicle_type) }} {{ $st['label'] }} @if($activeOrder) #{{ $activeOrder->order_number }} @else @endif {{ $todayDeliveries }} orders ? {{ number_format($rider->rating,1) }}
@csrf @method('DELETE')
{{-- -- ADD RIDER MODAL -- --}} {{-- -- RIDER DETAIL MODAL -- --}} {{-- -- EDIT RIDER MODAL -- --}} @endsection