@extends('layouts.app')
@section('title', 'Commande #' . $foodOrder->order_number)
@push('styles')
@endpush
@section('content')
{{-- Section d'aide --}}
{{-- Header --}}
@php
$statusConfig = [
'pending' => ['gradient' => 'from-amber-500 to-orange-500', 'icon' => '⏳', 'label' => 'En attente', 'bg' => 'bg-amber-100', 'text' => 'text-amber-700'],
'accepted' => ['gradient' => 'from-blue-500 to-blue-600', 'icon' => '✓', 'label' => 'Acceptée', 'bg' => 'bg-blue-100', 'text' => 'text-blue-700'],
'preparing' => ['gradient' => 'from-purple-500 to-purple-600', 'icon' => '🔥', 'label' => 'En préparation', 'bg' => 'bg-purple-100', 'text' => 'text-purple-700'],
'ready' => ['gradient' => 'from-green-500 to-emerald-500', 'icon' => '✅', 'label' => 'Prête', 'bg' => 'bg-green-100', 'text' => 'text-green-700'],
'delivered' => ['gradient' => 'from-emerald-500 to-teal-500', 'icon' => '📦', 'label' => 'Livrée', 'bg' => 'bg-emerald-100', 'text' => 'text-emerald-700'],
'completed' => ['gradient' => 'from-gray-500 to-gray-600', 'icon' => '🏁', 'label' => 'Terminée', 'bg' => 'bg-gray-100', 'text' => 'text-gray-700'],
'cancelled' => ['gradient' => 'from-red-500 to-red-600', 'icon' => '❌', 'label' => 'Annulée', 'bg' => 'bg-red-100', 'text' => 'text-red-700'],
'rejected' => ['gradient' => 'from-red-500 to-red-600', 'icon' => '🚫', 'label' => 'Refusée', 'bg' => 'bg-red-100', 'text' => 'text-red-700'],
];
$config = $statusConfig[$foodOrder->status] ?? $statusConfig['pending'];
@endphp
Retour aux commandes
{{ $config['icon'] }}
Commande #{{ $foodOrder->order_number }}
{{ $config['label'] }}
{{ $foodOrder->created_at->format('d/m/Y à H:i') }}
{{-- Colonne principale --}}
{{-- Actions rapides --}}
@if(!in_array($foodOrder->status, ['completed', 'cancelled', 'rejected', 'delivered']))
Actions rapides
@if($foodOrder->status === 'pending')
@elseif($foodOrder->status === 'accepted')
@elseif($foodOrder->status === 'preparing')
@elseif($foodOrder->status === 'ready')
@endif
@endif
{{-- Articles commandés --}}
Articles commandés
{{ $foodOrder->items->sum('quantity') }} articles
@foreach($foodOrder->items as $item)
{{ $item->quantity }}
{{ $item->product_name }}
@if($item->options)
{{ is_array($item->options) ? implode(', ', $item->options) : $item->options }}
@endif
{{ number_format($item->unit_price * $item->quantity, 2) }} €
{{ number_format($item->unit_price, 2) }}€/unité
@endforeach
Sous-total
{{ number_format($foodOrder->subtotal ?? $foodOrder->total, 2) }} €
@if($foodOrder->delivery_fee > 0)
Frais de livraison
{{ number_format($foodOrder->delivery_fee, 2) }} €
@endif
@if(isset($foodOrder->discount) && $foodOrder->discount > 0)
Réduction
-{{ number_format($foodOrder->discount, 2) }} €
@endif
Total
{{ number_format($foodOrder->total, 2) }} €
{{-- Notes du client --}}
@if($foodOrder->notes)
Notes du client
{{ $foodOrder->notes }}
@endif
{{-- Historique / Timeline --}}
Historique de la commande
📝
Commande passée
{{ $foodOrder->created_at->format('d/m/Y à H:i') }}
@if($foodOrder->accepted_at)
✓
Commande acceptée
{{ $foodOrder->accepted_at->format('d/m/Y à H:i') }}
@endif
@if($foodOrder->preparing_at)
🔥
Préparation démarrée
{{ $foodOrder->preparing_at->format('d/m/Y à H:i') }}
@endif
@if($foodOrder->ready_at)
✅
Commande prête
{{ $foodOrder->ready_at->format('d/m/Y à H:i') }}
@endif
@if($foodOrder->delivered_at)
📦
{{ $foodOrder->delivery_type === 'pickup' ? 'Récupérée par le client' : 'Commande livrée' }}
{{ $foodOrder->delivered_at->format('d/m/Y à H:i') }}
@endif
@if($foodOrder->status === 'rejected')
🚫
Commande refusée
@if($foodOrder->rejection_reason)
{{ $foodOrder->rejection_reason }}
@endif
@endif
@if($foodOrder->status === 'cancelled')
❌
Commande annulée
@if(isset($foodOrder->cancellation_reason) && $foodOrder->cancellation_reason)
{{ $foodOrder->cancellation_reason }}
@endif
@endif
{{-- Sidebar --}}
{{-- Informations client --}}
Client
@if($foodOrder->client && $foodOrder->client->profile_photo_url)

@else
{{ strtoupper(substr($foodOrder->client->name ?? 'C', 0, 1)) }}
@endif
{{ $foodOrder->client->name ?? 'Client' }}
{{ $foodOrder->client->email ?? '' }}
@if($foodOrder->client && $foodOrder->client->phone)
{{ $foodOrder->client->phone }}
@endif
{{-- Type de livraison --}}
@if($foodOrder->delivery_type === 'pickup')
@else
@endif
{{ $foodOrder->delivery_type === 'pickup' ? 'À emporter' : 'Livraison' }}
@if($foodOrder->delivery_type === 'pickup')
Le client viendra récupérer sa commande sur place
@if(isset($foodOrder->pickup_time) && $foodOrder->pickup_time)
🕐 Heure souhaitée : {{ \Carbon\Carbon::parse($foodOrder->pickup_time)->format('H:i') }}
@endif
@else
{{-- Section Livraison complète pour le livreur --}}
{{-- Contact du destinataire --}}
{{-- Adresse complète --}}
Adresse de livraison
{{ $foodOrder->delivery_address }}
{{-- Bouton GPS pour naviguer --}}
@if($foodOrder->delivery_lat && $foodOrder->delivery_lng)
Ouvrir dans GPS
@elseif($foodOrder->delivery_address)
Ouvrir dans Maps
@endif
{{-- Détails de l'immeuble --}}
@if($foodOrder->delivery_floor || $foodOrder->delivery_door_code || $foodOrder->delivery_building_info)
Infos immeuble
@if($foodOrder->delivery_floor)
🏢 Étage:
{{ $foodOrder->delivery_floor }}
@endif
@if($foodOrder->delivery_door_code)
🔑 Code:
{{ $foodOrder->delivery_door_code }}
@endif
@if($foodOrder->delivery_building_info)
📝 Instructions:
{{ $foodOrder->delivery_building_info }}
@endif
@endif
{{-- Carte de prévisualisation avec OpenStreetMap --}}
@if($foodOrder->delivery_lat && $foodOrder->delivery_lng)
@endif
@endif
{{-- Livreur assigné / Assignation --}}
@if($foodOrder->delivery_type === 'delivery')
Livreur
@if($foodOrder->driver_id)
Assigné
@else
En attente
@endif
@if($foodOrder->driver)
{{-- Livreur assigné --}}
{{ $foodOrder->driver->vehicle_icon ?? '🚗' }}
{{ $foodOrder->driver->full_name }}
{{ ucfirst($foodOrder->driver->vehicle_type ?? 'Véhicule') }}
@if($foodOrder->driver->phone)
📞 {{ $foodOrder->driver->phone }}
@endif
@if($foodOrder->driver->rating)
⭐ {{ number_format($foodOrder->driver->rating, 1) }}
@endif
{{ $foodOrder->driver->completed_deliveries ?? 0 }} livraisons
{{-- Statut livraison --}}
Statut livraison:
{{ $foodOrder->delivery_status_label ?? ucfirst($foodOrder->delivery_status ?? 'En attente') }}
@if($foodOrder->estimated_delivery_time)
⏱️ Temps estimé: ~{{ $foodOrder->estimated_delivery_time }} min
@endif
@if($foodOrder->delivery_distance)
📍 Distance: {{ $foodOrder->delivery_distance }} km
@endif
@else
{{-- Pas de livreur - En attente d'un livreur --}}
🔍
En attente d'un livreur
Les livreurs disponibles verront cette commande
@if(in_array($foodOrder->status, ['accepted', 'preparing', 'ready']))
💡 Un livreur acceptera automatiquement cette commande quand elle sera prête, ou vous pouvez gérer la livraison vous-même.
@endif
@endif
@endif
{{-- Paiement --}}
Paiement
Montant
{{ number_format($foodOrder->total, 2) }} €
Méthode
@if(isset($foodOrder->payment_method) && $foodOrder->payment_method)
@if($foodOrder->payment_method === 'card')
💳 Carte bancaire
@elseif($foodOrder->payment_method === 'cash')
💵 Espèces
@else
{{ ucfirst($foodOrder->payment_method) }}
@endif
@else
Non défini
@endif
Statut
@if($foodOrder->payment_status === 'paid')
Payé
@elseif($foodOrder->payment_status === 'pending')
⏳ En attente
@else
{{ ucfirst($foodOrder->payment_status ?? 'Inconnu') }}
@endif
@if($foodOrder->paid_at)
Payé le
{{ $foodOrder->paid_at->format('d/m/Y à H:i') }}
@endif
{{-- Bouton confirmation paiement espèces --}}
@if($foodOrder->payment_status !== 'paid' && !in_array($foodOrder->status, ['cancelled', 'rejected']))
Le client n'a pas encore payé
@endif
{{-- Modal de rejet --}}
@if($foodOrder->status === 'pending')