@extends('layouts.app') @section('title', 'Suivi - Commande #' . $foodOrder->order_number) @push('styles') @endpush @section('content')
{{-- Header avec retour --}}
Retour
Suivi en direct
{{-- Carte de statut principal --}} @php $statusConfig = [ 'pending' => [ 'gradient' => 'from-amber-400 to-orange-500', 'icon' => '⏳', 'title' => 'En attente', 'message' => 'Le prestataire va bientôt confirmer votre commande', ], 'accepted' => [ 'gradient' => 'from-blue-400 to-indigo-500', 'icon' => '✅', 'title' => 'Acceptée !', 'message' => 'Votre commande a été acceptée et va être préparée', ], 'preparing' => [ 'gradient' => 'from-purple-400 to-pink-500', 'icon' => '👨‍🍳', 'title' => 'En préparation', 'message' => 'Le chef prépare votre commande avec soin', ], 'ready' => [ 'gradient' => 'from-green-400 to-emerald-500', 'icon' => $foodOrder->delivery_type === 'pickup' ? '🎉' : '🚚', 'title' => $foodOrder->delivery_type === 'pickup' ? 'Prête !' : 'En route !', 'message' => $foodOrder->delivery_type === 'pickup' ? 'Votre commande vous attend ! Venez la récupérer' : 'Votre commande est en cours de livraison', ], 'delivered' => [ 'gradient' => 'from-green-500 to-teal-500', 'icon' => '📦', 'title' => 'Livrée', 'message' => 'Votre commande a été livrée. Bon appétit !', ], 'completed' => [ 'gradient' => 'from-green-500 to-emerald-600', 'icon' => '⭐', 'title' => 'Terminée', 'message' => 'Merci pour votre commande !', ], 'cancelled' => [ 'gradient' => 'from-red-400 to-rose-500', 'icon' => '❌', 'title' => 'Annulée', 'message' => 'Cette commande a été annulée', ], 'rejected' => [ 'gradient' => 'from-red-400 to-rose-500', 'icon' => '❌', 'title' => 'Refusée', 'message' => 'Cette commande a été refusée par le prestataire', ], ]; $config = $statusConfig[$foodOrder->status] ?? $statusConfig['pending']; $clientCancelBreakdown = $foodOrder->getCancellationBreakdown('client'); @endphp
{{-- Header animé --}}
{{ $config['icon'] }}

{{ $config['title'] }}

{{ $config['message'] }}

Commande #{{ $foodOrder->order_number }}
{{-- Temps estimé --}} @if(!in_array($foodOrder->status, ['cancelled', 'rejected', 'completed', 'delivered']))
⏱️

Temps estimé

@if($foodOrder->status === 'pending') En attente de confirmation @elseif($foodOrder->status === 'accepted' || $foodOrder->status === 'preparing') {{ $foodOrder->prestataire->food_estimated_prep_time ?? 30 }} min @elseif($foodOrder->status === 'ready') {{ $foodOrder->delivery_type === 'pickup' ? 'Prête à récupérer' : '~10 min' }} @endif

@endif {{-- Timeline --}}
@php $steps = [ ['key' => 'created', 'label' => 'Commande passée', 'time' => $foodOrder->created_at, 'icon' => '🛒', 'completed' => true], ['key' => 'accepted', 'label' => 'Acceptée', 'time' => $foodOrder->accepted_at, 'icon' => '✓', 'completed' => $foodOrder->accepted_at !== null], ['key' => 'preparing', 'label' => 'En préparation', 'time' => $foodOrder->preparing_at, 'icon' => '👨‍🍳', 'completed' => $foodOrder->preparing_at !== null], ['key' => 'ready', 'label' => 'Prête', 'time' => $foodOrder->ready_at, 'icon' => '✨', 'completed' => $foodOrder->ready_at !== null], ['key' => 'delivered', 'label' => $foodOrder->delivery_type === 'pickup' ? 'Récupérée' : 'Livrée', 'time' => $foodOrder->delivered_at, 'icon' => '🎉', 'completed' => $foodOrder->delivered_at !== null], ]; $currentStepIndex = 0; foreach($steps as $i => $step) { if ($step['completed']) $currentStepIndex = $i; } @endphp
@foreach($steps as $index => $step)
@if($index > 0)
@endif
@if($step['completed']) @else {{ $step['icon'] }} @endif
{{ $step['label'] }} @if($step['time']) {{ $step['time']->format('H:i') }} @endif
@endforeach
{{-- Code de vérification (visible quand commande prête/livrée) --}} @if($foodOrder->delivery_code && in_array($foodOrder->status, ['ready', 'delivered']))
🔐

{{ $foodOrder->delivery_type === 'pickup' ? 'Code de retrait' : 'Code de confirmation' }}

{{ $foodOrder->delivery_type === 'pickup' ? 'Donnez ce code au prestataire lors du retrait' : 'Donnez ce code au livreur à la réception' }}

{{ $foodOrder->delivery_code }}

⏱️ Ce code expire dans 24h

@endif {{-- Carte GPS avec suivi livreur en temps réel --}} @if($foodOrder->delivery_type === 'delivery' && $foodOrder->delivery_lat && $foodOrder->delivery_lng)

🗺️ Suivi GPS en direct

@if($foodOrder->driver_id) Livreur connecté @else En attente de livreur @endif
{{-- Légende --}}
Restaurant
Livreur
Vous
@elseif($foodOrder->delivery_type === 'pickup' && $foodOrder->prestataire->latitude && $foodOrder->prestataire->longitude)

📍 Adresse de retrait

Itinéraire

{{ $foodOrder->prestataire->company_name ?? $foodOrder->prestataire->business_name }}

{{ $foodOrder->prestataire->address }}, {{ $foodOrder->prestataire->postal_code }} {{ $foodOrder->prestataire->city }}

@endif {{-- Info livreur (si assigné) --}} @if($foodOrder->driver_id && $foodOrder->delivery_type === 'delivery') @php $driver = $foodOrder->driver; @endphp @if($driver)

🛵 Votre livreur

🏍️

{{ $driver->first_name ?? 'Livreur' }} {{ substr($driver->last_name ?? '', 0, 1) }}.

{{ ucfirst($driver->vehicle_type ?? 'scooter') }}

@if($driver->average_rating) {{ number_format($driver->average_rating, 1) }} ({{ $driver->total_ratings ?? 0 }}) @endif
@if($driver->phone) @endif
@endif @endif {{-- Infos prestataire --}} {{-- Résumé commande compact --}}

🛒 Résumé

@foreach($foodOrder->items as $item)
{{ $item->quantity }} {{ $item->product_name }}
{{ number_format($item->total_price, 2) }} €
@endforeach
Total {{ number_format($foodOrder->total, 2) }} €
{{-- Actions --}}
@if($foodOrder->isDelivered() && !$foodOrder->client_confirmed)
@csrf
@endif 📄 Voir les détails complets @if($foodOrder->canBeCancelled()) @endif
{{-- Modal annulation --}} @endsection @push('scripts') @endpush