@if(!$restaurant->enable_customer_reservation)
@lang('modules.reservation.reservationsDisabled')
@lang('modules.reservation.reservationsDisabledDescription')
@else
@lang('messages.frontReservationHeading')
@lang('messages.selectBookingDetail')
@php $startOfWeek = now()->timezone(timezone()); $endOfWeek = now()->timezone(timezone())->addDays(6); $period = \Carbon\CarbonPeriod::create($startOfWeek, $endOfWeek); $currentTime = now()->timezone(timezone())->format('H:i:s'); @endphp {{-- Date Selection --}}
@php $safeDate = '--'; try { if (!empty($date) && strtotime($date)) { $safeDate = \Carbon\Carbon::parse($date)->translatedFormat('d M, l'); } } catch (\Exception $e) { $safeDate = 'Unknown date'; } @endphp {{ $safeDate }}
@foreach ($period as $dateObj) @php $dateStr = $dateObj->format('Y-m-d'); $isDateClosed = in_array($dateStr, $disabledDates ?? []); @endphp
$isDateClosed ])> {{ $dateObj->translatedFormat('d M, l') }}
@endforeach
{{-- Guest Selection --}}
{{ $numberOfGuests }} @lang('modules.reservation.guests')
@for ($i = 1; $i <= 30; $i++)
{{ $i }} @lang('modules.reservation.guests')
@endfor
@error('numberOfGuests')
{{ $message }}
@enderror
{{-- Slot Type Selection --}}
@lang('modules.reservation.' . $slotType)
@php $slotTypes = \App\Livewire\Shop\BookATable::SLOT_TYPES; $selectedDay = 'Unknown'; try { if (!empty($date) && strtotime($date)) { $selectedDay = \Carbon\Carbon::parse($date)->format('l'); } } catch (\Exception $e) { $selectedDay = 'Unknown'; } @endphp @foreach($slotTypes as $type) @php $isSlotTypeDisabled = !isset($availableSlotTypes[$type]) || !in_array($selectedDay, $availableSlotTypes[$type] ?? []); @endphp
$isSlotTypeDisabled ])> @lang('modules.reservation.' . $type)
@endforeach
{{-- Time Slots --}}
@lang('messages.selectTimeSlot')
@if (empty($timeSlots) || !$this->isSlotTypeAvailable())
@lang('messages.noTimeSlot')
@endif
@foreach ($timeSlots as $timeSlot) @php $isDisabled = $this->isTimeSlotDisabled($timeSlot); @endphp
$isDisabled, 'cursor-pointer hover:text-gray-600 hover:bg-gray-50 dark:hover:text-gray-300 dark:hover:bg-gray-700' => !$isDisabled ]) >
@php $safeTime = '--'; try { if (!empty($timeSlot) && strtotime($timeSlot)) { $safeTime = \Carbon\Carbon::parse($timeSlot)->translatedFormat('h:i A'); } } catch (\Exception $e) { $safeTime = 'Unknown time'; } @endphp {{ $safeTime }}
@endforeach
@error('availableTimeSlots')
{{ $message }}
@enderror
{{-- Reservation Form (only shown when slots are available) --}} @if (!empty($timeSlots) && $this->isSlotTypeAvailable())
@if (is_null(customer()))
@lang('messages.loginForReservation')
@else
@lang('app.reserveNow')
@endif
@endif
@endif