@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', 'emoji' => '🔔' ], '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', 'emoji' => '👍' ], 'preparing' => [ 'gradient' => 'from-purple-400 to-pink-500', 'icon' => '👨‍🍳', 'title' => 'En préparation', 'message' => 'Le chef prépare votre commande avec soin', 'emoji' => '🍳' ], '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', 'emoji' => $foodOrder->delivery_type === 'pickup' ? '📍' : '🏃' ], 'delivered' => [ 'gradient' => 'from-green-500 to-teal-500', 'icon' => '📦', 'title' => 'Livrée', 'message' => 'Votre commande a été livrée. Bon appétit !', 'emoji' => '🍽️' ], 'completed' => [ 'gradient' => 'from-green-500 to-emerald-600', 'icon' => '⭐', 'title' => 'Terminée', 'message' => 'Merci pour votre commande !', 'emoji' => '💚' ], 'cancelled' => [ 'gradient' => 'from-red-400 to-rose-500', 'icon' => '❌', 'title' => 'Annulée', 'message' => 'Cette commande a été annulée', 'emoji' => '😔' ], 'rejected' => [ 'gradient' => 'from-red-400 to-rose-500', 'icon' => '❌', 'title' => 'Refusée', 'message' => 'Cette commande a été refusée par le prestataire', 'emoji' => '😔' ], ]; $config = $statusConfig[$foodOrder->status] ?? $statusConfig['pending']; @endphp
{{-- Header animé --}}
{{-- Icône principale --}}
{{ $config['icon'] }}

{{ $config['title'] }}

{{ $config['message'] }}

{{-- Numéro de commande --}}
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-15 min' }} @endif

@endif {{-- Timeline de progression --}}

📋 Progression

@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], ]; // Trouver l'étape active $currentStepIndex = 0; foreach($steps as $i => $step) { if ($step['completed']) { $currentStepIndex = $i; } } @endphp
@foreach($steps as $index => $step)
{{-- Ligne de connexion --}} @if($index < count($steps) - 1)
@endif {{-- Cercle --}}
@if($step['completed']) @else {{ $step['icon'] }} @endif
{{-- Contenu --}}

{{ $step['label'] }}

@if($step['time'])

{{ $step['time']->format('H:i') }} • {{ $step['time']->diffForHumans() }}

@elseif($index === $currentStepIndex + 1 && !in_array($foodOrder->status, ['cancelled', 'rejected']))

En cours...

@endif
@endforeach
{{-- Carte du lieu --}} @if($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 }}

@elseif($foodOrder->delivery_type === 'delivery' && $foodOrder->delivery_lat && $foodOrder->delivery_lng)

🏠 Adresse de livraison

{{ $foodOrder->delivery_address }}

@if($foodOrder->delivery_floor)

Étage: {{ $foodOrder->delivery_floor }}

@endif
@endif {{-- Infos prestataire --}}

👨‍🍳 Votre prestataire

@if($foodOrder->prestataire->profile_image) @else
👨‍🍳
@endif

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

{{ $foodOrder->prestataire->city }}

@if($foodOrder->prestataire->phone) Appeler le prestataire @endif
{{-- Résumé commande --}}

🛒 Résumé

@foreach($foodOrder->items as $item)
{{ $item->quantity }}x {{ $item->product_name }}
{{ number_format($item->total_price, 2) }} €
@endforeach
@if($foodOrder->service_fee > 0)
Frais de service {{ number_format($foodOrder->service_fee, 2) }} €
@endif @if($foodOrder->delivery_fee > 0)
Frais de livraison {{ number_format($foodOrder->delivery_fee, 2) }} €
@endif
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