diff --git a/app/Http/Controllers/Shop/OrderController.php b/app/Http/Controllers/Shop/OrderController.php index 0c945c29..3d007de5 100644 --- a/app/Http/Controllers/Shop/OrderController.php +++ b/app/Http/Controllers/Shop/OrderController.php @@ -49,12 +49,22 @@ class OrderController extends Controller { if (ShopCart::count()) { $customer = Customers::getWithAddresses(); - $deliveries = Deliveries::getByCustomer(); + $customerId = $customer ? $customer->id : false; + $defaultSaleChannelId = SaleChannels::getDefaultID($customerId); + $deliveries = $defaultSaleChannelId + ? Deliveries::getBySaleChannels([$defaultSaleChannelId]) + : Deliveries::getByCustomer($customerId); + $deliveries = $deliveries ? $deliveries->values() : collect(); + + $customerData = $customer ? $customer->toArray() : false; + if ($customerData && $defaultSaleChannelId) { + $customerData['default_sale_channel_id'] = $defaultSaleChannelId; + } $data = [ - 'customer' => $customer ? $customer->toArray() : false, + 'customer' => $customerData, 'basket' => Baskets::getBasketTotal(), - 'deliveries' => $deliveries ? $deliveries->toArray() : [], + 'deliveries' => $deliveries->toArray(), 'delivery_types' => DeliveryTypes::getWithPrice(Baskets::getWeight()), ]; diff --git a/resources/views/Shop/Orders/partials/addresses.blade.php b/resources/views/Shop/Orders/partials/addresses.blade.php index ec3e3d12..c0a896a7 100644 --- a/resources/views/Shop/Orders/partials/addresses.blade.php +++ b/resources/views/Shop/Orders/partials/addresses.blade.php @@ -1,13 +1,51 @@ +@php + $addresses = collect($addresses ?? []); + $preselectedAddressId = old($name); + + if ($preselectedAddressId === null && is_string($name) && str_contains($name, '[')) { + $dotName = preg_replace('/\[(.*?)\]/', '.$1', $name); + $dotName = trim($dotName, '.'); + $preselectedAddressId = $dotName ? old($dotName) : null; + } + + if (($preselectedAddressId === null || $preselectedAddressId === '') && $addresses->isNotEmpty()) { + $defaultAddress = $addresses->firstWhere('priority', 1); + + if (! $defaultAddress) { + $defaultAddress = $addresses + ->filter(function ($address) { + return (int) ($address['priority'] ?? 0) > 0; + }) + ->sortByDesc(function ($address) { + return (int) ($address['priority'] ?? 0); + }) + ->first(); + } + + if (! $defaultAddress) { + $defaultAddress = $addresses->firstWhere('is_default', true) + ?? $addresses->firstWhere('default', true); + } + + if (! $defaultAddress) { + $defaultAddress = $addresses->first(); + } + + $preselectedAddressId = $defaultAddress['id'] ?? null; + } + + $addresses = $addresses->all(); +@endphp + @if ($addresses) - @foreach ($addresses ?? [] as $address) + @foreach ($addresses as $address)