@extends('layouts.app')
@section('title', 'Корзина — teeu')
@section('seo')
@endsection
{{-- Корзина и оформление заказа — одна страница (макет редизайна «Корзина»):
слева товары по продавцам, способ оплаты и имя получателя; справа липкая
панель с итогом по отмеченным позициям и пунктами выдачи. --}}
@section('content')
@php($lineCount = $rows->count())
Корзина пуста
Добавьте товары из каталога — они появятся здесь.
Перейти в каталог
@else
@if ($errors->any())
@foreach ($errors->all() as $e)
{{ $e }}
@endforeach
@endif
{{-- Минимальный заказ у продавца считается здесь же, на лету: сумма по
ВЫБРАННЫМ строкам продавца × их текущее количество (степпер меняет его
без перезагрузки и сообщает событием cart-qty). Невыбранная группа не
оформляется — и порог её не проверяется. Окончательное слово за сервером
(CheckoutService), здесь — подсказка, чтобы до него не доходить зря. --}}
@php($cartQty = $rows->mapWithKeys(fn ($r) => [(string) $r['item']->id => (int) $r['item']->quantity]))
@php($cartPrice = $rows->mapWithKeys(fn ($r) => [(string) $r['item']->id => (float) $r['price']]))
@php($cartMinimums = $rows->groupBy(fn ($r) => $r['item']->product?->seller_id)
->map(fn ($g) => [
'min' => $g->first()['item']->product?->seller?->minimumOrderAmount(),
'ids' => $g->filter(fn ($r) => $r['eligible'])->map(fn ($r) => (string) $r['item']->id)->values()->all(),
])
->filter(fn ($m) => $m['min'] !== null)->values())
{{-- Без выбранного пункта выдачи оформить нельзя (продавцу некуда отправлять). --}}
@php($registry = app(\App\Services\Shipping\CarrierRegistry::class))
@php($pickupAvailable = $registry->pickupAvailable())
@php($needPickup = $pickupAvailable && auth()->user()->pickupPoints()->doesntExist())
@php($fmt = fn ($v) => number_format((float) $v, 0, '.', ' ').' ₽')