@extends('layouts.app')
@section('title', 'Commande #' . $foodOrder->order_number)
@push('styles')
@endpush
@section('content')
@php
$statusConfig = [
'pending' => ['gradient' => 'from-amber-400 to-orange-500', 'bg' => 'bg-amber-500', 'icon' => '⏳', 'label' => 'En attente', 'desc' => 'Le prestataire va confirmer votre commande', 'step' => 1],
'accepted' => ['gradient' => 'from-blue-400 to-indigo-500', 'bg' => 'bg-blue-500', 'icon' => '👍', 'label' => 'Acceptée', 'desc' => 'Votre commande va être préparée', 'step' => 2],
'preparing' => ['gradient' => 'from-purple-400 to-pink-500', 'bg' => 'bg-purple-500', 'icon' => '👨🍳', 'label' => 'En préparation', 'desc' => 'Le chef prépare votre commande', 'step' => 3],
'ready' => ['gradient' => 'from-green-400 to-emerald-500', 'bg' => 'bg-green-500', 'icon' => $foodOrder->delivery_type === 'pickup' ? '🎉' : '🚚', 'label' => $foodOrder->delivery_type === 'pickup' ? 'Prête !' : 'En route', 'desc' => $foodOrder->delivery_type === 'pickup' ? 'Venez récupérer votre commande' : 'Votre commande arrive bientôt', 'step' => 4],
'delivered' => ['gradient' => 'from-emerald-400 to-teal-500', 'bg' => 'bg-teal-500', 'icon' => '📦', 'label' => 'Livrée', 'desc' => 'Bon appétit !', 'step' => 5],
'completed' => ['gradient' => 'from-gray-400 to-gray-500', 'bg' => 'bg-gray-500', 'icon' => '✅', 'label' => 'Terminée', 'desc' => 'Merci pour votre commande', 'step' => 5],
'cancelled' => ['gradient' => 'from-red-400 to-rose-500', 'bg' => 'bg-red-500', 'icon' => '❌', 'label' => 'Annulée', 'desc' => 'Commande annulée', 'step' => 0],
'rejected' => ['gradient' => 'from-red-400 to-rose-500', 'bg' => 'bg-red-500', 'icon' => '🚫', 'label' => 'Refusée', 'desc' => 'Le prestataire a refusé', 'step' => 0],
];
$config = $statusConfig[$foodOrder->status] ?? $statusConfig['pending'];
$isActive = !in_array($foodOrder->status, ['cancelled', 'rejected', 'completed']);
@endphp
{{-- Header Sticky avec statut --}}
Commande
#{{ $foodOrder->order_number }}
@if($isActive)
Live
@else
@endif
{{-- Statut principal --}}
{{ $config['icon'] }}
{{ $config['label'] }}
{{ $config['desc'] }}
@if($isActive && in_array($foodOrder->status, ['accepted', 'preparing']))
⏱️
≈ {{ $foodOrder->prestataire->food_estimated_prep_time ?? 30 }} min
@endif
{{-- Progress bar horizontale minimaliste --}}
@if(!in_array($foodOrder->status, ['cancelled', 'rejected']))
@php
$steps = [
['step' => 1, 'icon' => '📝', 'label' => 'Reçue'],
['step' => 2, 'icon' => '✓', 'label' => 'Acceptée'],
['step' => 3, 'icon' => '🔥', 'label' => 'Préparation'],
['step' => 4, 'icon' => $foodOrder->delivery_type === 'pickup' ? '📍' : '🚚', 'label' => $foodOrder->delivery_type === 'pickup' ? 'Prête' : 'Livrée'],
];
@endphp
@foreach($steps as $i => $step)
@if($i > 0)
@endif
@if($config['step'] > $step['step'])
@else
{{ $step['icon'] }}
@endif
{{ $step['label'] }}
@endforeach
@endif
{{-- Alerte action requise --}}
@if($foodOrder->isDelivered() && !$foodOrder->client_confirmed)
✅
Commande reçue ?
Confirmez la réception pour terminer
@endif
{{-- Carte - Adresse livraison/retrait --}}
@if($foodOrder->delivery_type === 'pickup' || ($foodOrder->delivery_lat && $foodOrder->delivery_lng))
{{ $foodOrder->delivery_type === 'pickup' ? '📍 Adresse de retrait' : '🏠 Livraison' }}
@if($foodOrder->delivery_type === 'pickup')
{{ $foodOrder->prestataire->address }}, {{ $foodOrder->prestataire->city }}
@else
{{ $foodOrder->delivery_address }}
@endif
@if($foodOrder->delivery_floor)
Étage {{ $foodOrder->delivery_floor }}@if($foodOrder->delivery_door_code) • Code: {{ $foodOrder->delivery_door_code }}@endif
@endif
@php
$lat = $foodOrder->delivery_type === 'pickup' ? $foodOrder->prestataire->latitude : $foodOrder->delivery_lat;
$lng = $foodOrder->delivery_type === 'pickup' ? $foodOrder->prestataire->longitude : $foodOrder->delivery_lng;
@endphp
@if($lat && $lng)
@endif
@endif
{{-- Prestataire - Compact --}}
@if($foodOrder->prestataire->profile_image)
 }})
@else
👨🍳
@endif
{{ $foodOrder->prestataire->company_name ?? $foodOrder->prestataire->business_name }}
{{ $foodOrder->prestataire->city }}
@if($foodOrder->prestataire->phone)
@endif
{{-- Articles - Accordion --}}
@foreach($foodOrder->items as $item)
{{ $item->quantity }}x
{{ $item->product_name }}
{{ number_format($item->total_price, 2) }} €
@if($item->special_instructions)
💬 {{ $item->special_instructions }}
@endif
@endforeach
Sous-total
{{ number_format($foodOrder->subtotal, 2) }} €
@if($foodOrder->service_fee > 0)
Frais de service
{{ number_format($foodOrder->service_fee, 2) }} €
@endif
@if($foodOrder->delivery_fee > 0)
Livraison
{{ number_format($foodOrder->delivery_fee, 2) }} €
@endif
Total
{{ number_format($foodOrder->total, 2) }} €
{{-- Paiement --}}
💳
@if($foodOrder->payment_method === 'card')
Carte bancaire
@elseif($foodOrder->payment_method === 'cash')
Espèces
@else
Paiement
@endif
{{ $foodOrder->payment_status === 'paid' ? '✓ Payé' : 'En attente' }}
{{ number_format($foodOrder->total, 2) }} €
{{-- Bouton payer si pas encore payé ET prestataire a Stripe --}}
@if(function_exists('feature_enabled') && feature_enabled('food_payment_enabled') && $foodOrder->prestataire->stripe_onboarding_completed)
@if($foodOrder->payment_status !== 'paid' && !in_array($foodOrder->status, ['cancelled', 'rejected']))
💳 Payer maintenant
@endif
@endif
{{-- Infos supplémentaires - Accordion --}}
Commandé le
{{ $foodOrder->created_at->format('d/m/Y à H:i') }}
@if($foodOrder->accepted_at)
Acceptée
{{ $foodOrder->accepted_at->format('H:i') }}
@endif
@if($foodOrder->preparing_at)
En préparation
{{ $foodOrder->preparing_at->format('H:i') }}
@endif
@if($foodOrder->ready_at)
Prête
{{ $foodOrder->ready_at->format('H:i') }}
@endif
@if($foodOrder->delivered_at)
Livrée
{{ $foodOrder->delivered_at->format('H:i') }}
@endif
Type
{{ $foodOrder->delivery_type === 'pickup' ? 'À emporter' : 'Livraison' }}
@if($foodOrder->delivery_contact_name)
Contact
{{ $foodOrder->delivery_contact_name }}
@endif
@if($foodOrder->notes)
Notes
{{ $foodOrder->notes }}
@endif
{{-- Annuler la commande --}}
@if($foodOrder->canBeCancelled())
@endif
{{-- Bottom bar fixe - Commander à nouveau --}}
@if(in_array($foodOrder->status, ['completed', 'delivered']))
@endif
{{-- Modal annulation --}}
Annuler la commande ?
Cette action est irréversible.
@endsection
@push('scripts')
@endpush