@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']); $effectivePaymentPolicy = $foodOrder->getPaymentPolicy(); $effectivePaymentType = (string) ($effectivePaymentPolicy['type'] ?? (($foodOrder->payment_method ?? 'cash') === 'cash' ? 'cash' : 'full_prepay')); $isCashOnlyPayment = $effectivePaymentType === 'cash'; $canOfferOnlinePayment = function_exists('food_online_payment_enabled') && food_online_payment_enabled() && ($foodOrder->prestataire->stripe_onboarding_completed ?? false) && !$isCashOnlyPayment && !in_array($foodOrder->payment_status, ['paid', 'partial', 'pending_capture'], true) && !in_array($foodOrder->status, ['cancelled', 'rejected'], true); $clientCancelBreakdown = $foodOrder->getCancellationBreakdown('client'); @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
{{-- Code (visible côté client) --}} @if($foodOrder->delivery_code && in_array($foodOrder->status, ['ready', 'delivered']) && in_array($foodOrder->delivery_type, ['delivery', 'pickup']))
🔐

{{ $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 }}

@endif {{-- Alerte action requise --}} @if($foodOrder->isDelivered() && !$foodOrder->client_confirmed)

Commande reçue ?

Confirmez la réception pour terminer

@csrf
@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 {{-- Bouton Suivi GPS en direct (livraison active avec livreur) --}} @if($isActive && $foodOrder->delivery_type === 'delivery' && $foodOrder->driver_id)
🛵

Suivre le livreur en direct

GPS temps réel sur la carte

@elseif($isActive)
📍

Suivi de commande

Voir la progression en temps réel

@endif {{-- Informations de la commande --}}
📋

Détails de la commande

Date de commande

{{ $foodOrder->created_at->format('d/m/Y') }}

{{ $foodOrder->created_at->format('H:i') }}

@if($foodOrder->requested_at)

📅 Livraison souhaitée

{{ \Carbon\Carbon::parse($foodOrder->requested_at)->format('d/m/Y') }}

{{ \Carbon\Carbon::parse($foodOrder->requested_at)->format('H:i') }}

@else

Mode de livraison

@if($foodOrder->delivery_type === 'pickup') 🏪 À emporter @elseif($foodOrder->delivery_type === 'delivery') 🚚 Livraison @else 📍 Sur place @endif

@endif @if($foodOrder->requested_at)

Mode de livraison

@if($foodOrder->delivery_type === 'pickup') 🏪 À emporter @elseif($foodOrder->delivery_type === 'delivery') 🚚 Livraison @else 📍 Sur place @endif

@endif @if($foodOrder->notes)

📝 Notes

{{ $foodOrder->notes }}

@endif
{{-- Prestataire - Compact --}} {{-- 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($isCashOnlyPayment) Espèces @elseif($foodOrder->payment_method === 'card') Carte bancaire @elseif(($foodOrder->payment_method ?? null) === 'online') Paiement en ligne @else Paiement en ligne @endif

{{ $foodOrder->payment_status === 'paid' ? '✓ Payé' : 'En attente' }}

{{ number_format($foodOrder->total, 2) }} €
{{-- Bouton payer uniquement si un paiement en ligne est réellement requis --}} @if($canOfferOnlinePayment) 💳 Payer maintenant @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'])) {{-- Rating section --}} @if(!$foodOrder->rated_at)

Notez votre expérience

@csrf {{-- Note commande --}}
@for($i = 1; $i <= 5; $i++) @endfor
{{-- Note livreur (uniquement si livraison avec livreur) --}} @if($foodOrder->delivery_type === 'delivery' && $foodOrder->driver_id)
@for($i = 1; $i <= 5; $i++) @endfor
@endif
@else

Merci pour votre avis !

{{ $foodOrder->rating }}/5 ★

@endif
🔄 Commander à nouveau
@endif
{{-- Modal annulation --}} @endsection @push('scripts') @endpush