@php $indexRoute = $indexRoute ?? route('appointments.index'); $appointmentFrom = $appointmentFrom ?? 'appointments'; $appointmentsBase = $appointmentsBase ?? rtrim(route('appointments.index'), '/'); $appointmentStoreUrl = $appointmentStoreUrl ?? null; $managementMode = (bool) ($managementMode ?? false); $managementRestrictLeadsToAssignee = (bool) ($managementRestrictLeadsToAssignee ?? $managementMode); $personalAppointmentMode = (bool) ($personalAppointmentMode ?? false); $appointmentsViewerId = auth()->id() !== null ? (int) auth()->id() : null; $showSalesmanColumn = (bool) ($showSalesmanColumn ?? false); $salesmanOptions = $salesmanOptions ?? []; $selectedSalesmanId = $selectedSalesmanId ?? null; $selectedSalesmanStr = $selectedSalesmanId !== null ? (string) $selectedSalesmanId : ''; $monthNames = [ 1 => 'January', 2 => 'February', 3 => 'March', 4 => 'April', 5 => 'May', 6 => 'June', 7 => 'July', 8 => 'August', 9 => 'September', 10 => 'October', 11 => 'November', 12 => 'December', ]; $monthSelectOptions = []; foreach ($monthNames as $num => $label) { $monthSelectOptions[] = ['value' => (string) $num, 'label' => $label]; } $yearSelectOptions = collect($yearOptions ?? [])->map(fn ($y) => ['value' => (string) $y, 'label' => (string) $y])->all(); $daySelectOptions = [['value' => '', 'label' => 'All days']]; foreach (($dayOptions ?? []) as $dayNum) { $daySelectOptions[] = ['value' => (string) $dayNum, 'label' => (string) $dayNum]; } $selectedDayStr = $selectedDay !== null ? (string) $selectedDay : ''; $statusFilterOptions = [['value' => '', 'label' => 'All statuses']]; foreach (($statusOptions ?? []) as $st) { $statusFilterOptions[] = [ 'value' => (string) $st, 'label' => match ($st) { 'no_show' => 'No show', 'missed' => 'Missed', default => ucfirst($st), }, ]; } $selectedStatusStr = $selectedStatus !== null ? (string) $selectedStatus : ''; $salesmanFilterOptions = [['value' => '', 'label' => 'All salespeople']]; foreach ($salesmanOptions as $option) { $salesmanFilterOptions[] = [ 'value' => (string) $option['id'], 'label' => $option['label'], ]; } $reopenAppointmentId = old('__appointment_id'); $reopenReschedule = filled($reopenAppointmentId) && ($errors->has('reschedule_reason') || filled(old('reschedule_reason'))); $reopenEdit = filled($reopenAppointmentId) && ! $reopenReschedule; $reopenEditSalesmanId = ''; if ($reopenEdit && $reopenAppointmentId) { $reopenEditSalesmanId = (string) old( '__edit_salesman_id', \App\Models\Appointment::query()->whereKey((int) $reopenAppointmentId)->value('user_id') ?? '', ); } $reopenNewAppointment = old('__appointment_from') === $appointmentFrom && ! $reopenEdit && ! $reopenReschedule && ( $personalAppointmentMode || filled(old('lead_id') ?: old('__appointment_lead_id')) ); $rescheduleRouteName = $managementMode ? 'sales-appointments.reschedule' : 'appointments.reschedule'; $updateRouteName = $managementMode ? 'sales-appointments.update' : 'appointments.update'; $appointmentReschedulePathTemplate = preg_replace( '#/(\d+)/reschedule$#', '/__ID__/reschedule', route($rescheduleRouteName, ['appointment' => 1]), ); $appointmentUpdatePathTemplate = preg_replace( '#/(\d+)$#', '/__ID__', route($updateRouteName, ['appointment' => 1]), ); $appointmentsAlpineConfig = [ 'appointmentsBase' => rtrim($appointmentsBase, '/'), 'appointmentReschedulePathTemplate' => $appointmentReschedulePathTemplate, 'appointmentUpdatePathTemplate' => $appointmentUpdatePathTemplate, 'appointmentStoreUrl' => $appointmentStoreUrl, 'leadUrlBase' => url('/leads'), 'managementMode' => $managementMode, 'managementRestrictLeadsToAssignee' => $managementRestrictLeadsToAssignee, 'personalAppointmentMode' => $personalAppointmentMode, 'todayDate' => now()->format('Y-m-d'), 'filterYear' => (string) (int) $selectedYear, 'filterMonth' => (string) (int) $selectedMonth, 'filterDay' => $selectedDayStr, 'filterStatus' => $selectedStatusStr, 'filterSalesman' => $selectedSalesmanStr, 'appointmentDateDefault' => old('appointment_date', now()->format('Y-m-d')), 'appointmentTimeDefault' => old('appointment_time', '09:00'), 'appointmentLocationDefault' => old('location', ''), 'appointmentNotesDefault' => old('notes', ''), 'appointmentLeadIdDefault' => old('lead_id', old('__appointment_lead_id', '')), 'appointmentWithUserIdDefault' => old('with_user_id', ''), 'reopenAppointment' => $reopenNewAppointment ? [ 'leadId' => filled(old('lead_id', old('__appointment_lead_id'))) ? (int) old('lead_id', old('__appointment_lead_id')) : null, 'withUserId' => filled(old('with_user_id')) ? (int) old('with_user_id') : null, ] : null, 'editWithUserIdDefault' => old('with_user_id', ''), 'reopenEdit' => $reopenEdit ? ['appointmentId' => (int) $reopenAppointmentId] : null, 'reopenReschedule' => $reopenReschedule ? ['appointmentId' => (int) $reopenAppointmentId] : null, 'editLeadIdDefault' => old('lead_id', ''), 'editSalesmanIdDefault' => $reopenEditSalesmanId, 'editDateDefault' => old('appointment_date', ''), 'editTimeDefault' => old('appointment_time', '09:00'), 'editLocationDefault' => old('location', ''), 'editNotesDefault' => old('notes', ''), 'leadOptions' => $leadOptions ?? [], 'salesmanOptions' => $salesmanOptions, 'rescheduleDateDefault' => old('appointment_date', ''), 'rescheduleTimeDefault' => old('appointment_time', '09:00'), 'rescheduleReasonDefault' => old('reschedule_reason', ''), 'appointmentFrom' => $appointmentFrom, ]; $tableColspan = match (true) { $personalAppointmentMode => 6, $showSalesmanColumn => 11, default => 10, }; @endphp
@if ($showSalesmanColumn)
@endif

{{ number_format(count($appointments ?? [])) }} appointment(s)

@if ($personalAppointmentMode) @else @if ($showSalesmanColumn) @endif @endif @forelse ($appointments as $appointment) @php $lead = $appointment->lead; $salesman = $appointment->user; $salesmanName = $salesman ? trim(trim((string) $salesman->name).' '.trim((string) ($salesman->surname ?? ''))) : '—'; if ($salesmanName === '' && $salesman) { $salesmanName = 'Salesperson #'.$salesman->id; } $timeForInput = $appointment->appointment_time ? \Illuminate\Support\Str::substr((string) $appointment->appointment_time, 0, 5) : ($appointment->appointment_datetime?->format('H:i') ?? '09:00'); @endphp @if ($personalAppointmentMode) @else @if ($showSalesmanColumn) @endif @endif @empty @endforelse
Date / timePerson Place Email Contact number StatusSalespersonLead Type Representative Phone Email Vehicle Location Notes Status
{{ $appointment->formattedDateTime() }}{{ $appointment->managerPersonName($appointmentsViewerId) }} {{ $appointment->managerPlace() ?? '—' }} {{ $appointment->managerContactEmail() ?? '—' }} {{ $appointment->managerContactPhone() ?? '—' }} {{ $appointment->statusLabel() }} {{ $salesmanName }}{{ $appointment->counterpartyLabelForViewer($appointmentsViewerId) }} @if (! $appointment->displaySubtext()) @endif {{ $lead?->displayRepresentativeName() ?: '—' }} {{ $lead?->displayPhone() ?? '—' }} {{ $lead?->displayEmail() ?? '—' }} {{ $lead?->displayVehicleInterest() ?: '—' }} {{ $appointment->location ?: '—' }} {{ $appointment->notes ?: '—' }} {{ $appointment->statusLabel() }}
No appointments match these filters.