@php $items = collect(); $cartCount = 0; $cartTotal = 0; if(auth()->check()) { $cartModel = auth()->user()->cart; if($cartModel) { $items = $cartModel->items()->with([ 'product.images' => function ($query) { $query->orderBy('sort_order', 'asc')->orderBy('id', 'asc'); }, 'dish.photos', ])->get(); // Nombre d'articles distincts, pas la somme des quantités. $cartCount = $items->filter(fn ($item) => $item->hasSellable())->count(); $cartConverter = app(\App\Services\CurrencyConverter::class); $cartTotal = $items->sum(function ($item) use ($cartConverter) { if (!$item->hasSellable()) { return 0; } $price = $cartConverter->convert($item->unitPrice(), $item->currency(), display_currency()); // Les frais de livraison de la ligne (stockés en EUR) comptent // une fois, pas par unité. return $price * (int) $item->quantity + $cartConverter->convert($item->chargedShipping(), 'EUR', display_currency()); }); } } @endphp