@extends('layouts.app') @section('title', 'Gestion des livreurs') @push('styles') @endpush @section('content') @php $filter = $filter ?? request('filter', 'all'); $search = $search ?? request('search', ''); $preferences = $preferences ?? collect(); $createPanelOpen = $errors->any() || request()->boolean('create'); $vehicleIcons = [ 'scooter' => 'πŸ›΅', 'moto' => '🏍️', 'motorcycle' => '🏍️', 'velo' => '🚴', 'bike' => '🚴', 'voiture' => 'πŸš—', 'car' => 'πŸš—', 'van' => '🚐', 'truck' => '🚚', ]; $filters = [ 'all' => ['Tous', 'fas fa-layer-group'], 'available' => ['Disponibles', 'fas fa-circle'], 'busy' => ['En mission', 'fas fa-route'], 'linked' => ['Compte lie', 'fas fa-link'], 'offline' => ['Hors ligne', 'fas fa-power-off'], 'preferred' => ['Favoris', 'fas fa-star'], 'blocked' => ['Bloques', 'fas fa-ban'], ]; @endphp
Hub livreurs

Equipe interne livreurs

La page reprend une presentation compacte comme les autres modules prestataire: moins chargee, lisible sur mobile, et centree sur l’equipe interne, la disponibilite et l’acces rapide au profil.

{{ $stats['total'] ?? 0 }} livreur(s) {{ $stats['available'] ?? 0 }} disponible(s) {{ $stats['linked'] ?? 0 }} compte(s) lies
@if(session('success'))
{{ session('success') }}
@endif @if(session('error'))
{{ session('error') }}
@endif
Ajouter un livreur interne
Creation rapide sans compte prestataire. Le livreur peut ensuite etre lie a un compte utilisateur standard depuis son profil.
Nouveau livreur
@if($errors->any())
{{ $errors->first() }}
@endif
@csrf
Equipe {{ $stats['total'] ?? 0 }} Interne Disponibles {{ $stats['available'] ?? 0 }} Pret a partir En mission {{ $stats['busy'] ?? 0 }} Tournee active Comptes lies {{ $stats['linked'] ?? 0 }} Connexion possible Hors ligne {{ $stats['offline'] ?? 0 }} A relancer
@if($search !== '') Effacer @endif
@if($drivers->count() > 0)
@foreach($drivers as $driver) @php $vehicleType = strtolower((string) ($driver->vehicle_type ?? 'scooter')); $vehicleIcon = $vehicleIcons[$vehicleType] ?? 'πŸ›΅'; $isAvailable = (bool) ($driver->is_available ?? false); $isBusy = (($driver->active_orders_count ?? 0) > 0) || (($driver->status ?? null) === \App\Models\DeliveryDriver::STATUS_BUSY); $statusTone = $isBusy ? 'busy' : ($isAvailable ? 'available' : 'offline'); $statusLabel = $isBusy ? 'En mission' : ($isAvailable ? 'Disponible' : 'Hors ligne'); $isLinked = !empty($driver->user_id); $prefStatus = optional($preferences->get($driver->id))->status; $phoneDigits = preg_replace('/[^0-9]/', '', (string) ($driver->phone ?? '')); $distance = $driver->max_distance_km ?? $driver->max_distance ?? 10; @endphp
@if($driver->photo) {{ $driver->full_name ?? $driver->first_name }} @else {{ strtoupper(substr((string) ($driver->first_name ?? ''), 0, 1) . substr((string) ($driver->last_name ?? ''), 0, 1)) }} @endif
{{ $driver->full_name ?? trim(($driver->first_name ?? '') . ' ' . ($driver->last_name ?? '')) }}
{{ $vehicleIcon }} {{ ucfirst($vehicleType) }} @if(!empty($driver->city)) {{ $driver->city }}@endif
{{ $statusLabel }}
Interne {{ $isLinked ? 'Compte lie' : 'Compte a lier' }} @if($prefStatus === \App\Models\PrestataireDriverPreference::STATUS_PREFERRED) Favori @elseif($prefStatus === \App\Models\PrestataireDriverPreference::STATUS_BLOCKED) Bloque @endif
{{ number_format((float) ($driver->rating ?? 0), 1) }}/5 {{ (int) ($driver->completed_deliveries ?? $driver->total_deliveries ?? 0) }} livraison(s) {{ (int) ($driver->active_orders_count ?? 0) }} active(s)
@if($driver->phone) @endif @if($driver->email)
{{ $driver->email }}
@endif
Rayon max {{ is_numeric($distance) ? rtrim(rtrim(number_format((float) $distance, 1, '.', ''), '0'), '.') : $distance }} km
@if($driver->created_at)
Ajoute {{ $driver->created_at->diffForHumans() }}
@endif
Voir le profil @if($phoneDigits !== '') @else @endif @if($driver->phone) @else @endif
@csrf
@csrf
@endforeach
@if(method_exists($drivers, 'links'))
{{ $drivers->links() }}
@endif @else
Aucun livreur ne correspond a ce filtre
Essayez un autre filtre, effacez la recherche, ou ajoutez directement un livreur interne depuis le panneau de creation.
@endif
Repere rapide
Compte lie

Le livreur peut utiliser son acces plateforme et recevoir sa route depuis le module livreur.

En mission

Le livreur a deja une ou plusieurs commandes actives. Le compteur reste visible sur sa carte.

Ajout interne

Creation immediate sans compte prestataire supplementaire, puis liaison optionnelle depuis le profil detaille.

@endsection