@include('partials.doctor-header', ['doctor' => $doctor])

Calendario

Settimana: {{ \Carbon\Carbon::parse($weekStartDate)->translatedFormat('d M Y') }} – {{ \Carbon\Carbon::parse($weekStartDate)->addDays(6)->translatedFormat('d M Y') }}

@php $base = \Carbon\Carbon::create($calBaseYear, $calBaseMonth, 1); $months = [ $base->copy(), $base->copy()->addMonth(), $base->copy()->addMonths(2), ]; $selectedStart = \Carbon\Carbon::parse($weekStartDate); $selectedEnd = $selectedStart->copy()->addDays(6); $selectedDayYmd = $selectedStart->toDateString(); $todayYmd = now()->toDateString(); @endphp
Cambia data
@foreach($months as $m) @php $start = $m->copy()->startOfMonth(); $firstDow = $start->dayOfWeekIso; $daysInMonth = $m->daysInMonth; $label = $m->translatedFormat('F Y'); $pad = $firstDow - 1; $today = \Carbon\Carbon::today(); $isRealCurrentMonth = $m->month === $today->month && $m->year === $today->year; @endphp
{{ $label }}
L
M
M
G
V
S
D
@for($i = 0; $i < $pad; $i++)
@endfor @for($d = 1; $d <= $daysInMonth; $d++) @php $ymd = $m->copy()->day($d)->toDateString(); $isToday = $ymd === $todayYmd; $isSelectedWeek = \Carbon\Carbon::parse($ymd)->betweenIncluded($selectedStart, $selectedEnd); $isSelectedDay = $ymd === $selectedDayYmd; if ($isToday) { $calClass = 'bg-sky-600 text-white border-sky-600 hover:bg-sky-700'; } elseif ($isSelectedDay) { $calClass = 'bg-emerald-700 text-white border-emerald-700 hover:bg-emerald-800'; } elseif ($isSelectedWeek) { $calClass = 'bg-emerald-100 text-emerald-900 border-emerald-200 hover:bg-emerald-200'; } else { $calClass = 'bg-white text-gray-800 border-gray-200 hover:bg-gray-50'; } @endphp @endfor
@endforeach
@if (session()->has('success'))
{{ session('success') }}
@endif
@foreach ($weekDays as $day)
{{ $day['label'] }}
@if (empty($day['slots']))
Nessuna disponibilità
@else
@foreach ($day['slots'] as $slot) @php $state = $slot['state']; $isFree = $state === 'free'; $isCancelled = $state === 'cancelled'; if ($isFree) { $btnStyle = ''; $btnClass = 'bg-emerald-50 hover:bg-emerald-100 border-emerald-200 text-emerald-900'; } elseif ($isCancelled) { $btnStyle = ''; $btnClass = 'bg-gray-50 hover:bg-gray-100 border-gray-200 text-gray-600'; } else { $btnStyle = 'background-color: '.($slot['service_color'] ?? '#3B82F6').'; color:white; border:none;'; $btnClass = ''; } @endphp @if ($isFree) @else
@endif @endforeach @if (!empty($day['cancelled']))
Appuntamenti disdetti
@foreach ($day['cancelled'] as $c)
{{ $c['time'] }} {{ $c['patient_name'] }}
@endforeach
@endif
@endif
@endforeach
{{-- MODAL: NUOVO APPUNTAMENTO --}} @if($showBookingModal)
Nuovo appuntamento
Slot: {{ \Carbon\Carbon::parse($selectedSlot)->format('d/m/Y H:i') }}
@if($showPatientSuggestions && !empty($patientSuggestions))
@foreach($patientSuggestions as $p) @endforeach
@endif @error('patient_name')
{{ $message }}
@enderror @if($bookingPatientStatus === 'existing' && !empty($bookingPatientMatch))
Paziente trovato: {{ $bookingPatientMatch['name'] ?? '' }} @if(!empty($bookingPatientMatch['email'])) — {{ $bookingPatientMatch['email'] }} @endif
@elseif($bookingPatientStatus === 'new' && !empty($patient_name))
Nuovo paziente: verrà creato al salvataggio.
@endif
@error('patient_name')
{{ $message }}
@enderror
@error('patient_email')
{{ $message }}
@enderror @if($bookingPatientStatus === 'existing' && !empty($bookingPatientMatch))
Paziente già presente nel database.
@elseif($bookingPatientStatus === 'new' && !empty($patient_email))
Nuovo paziente: verrà creato automaticamente al salvataggio.
@elseif($bookingPatientStatus === 'email_taken')
Questa email è già usata da un account non-paziente. Usa un'altra email oppure lascia vuoto il campo email.
@endif
@error('patient_phone')
{{ $message }}
@enderror
@if (!empty($services))
@error('service_id')
{{ $message }}
@enderror
@endif
@endif {{-- MODAL: DETTAGLIO APPUNTAMENTO --}} @if($showAppointmentModal && $openAppointmentData)
Appuntamento
{{ $openAppointmentData['date_label'] }} · {{ $openAppointmentData['time_label'] }} · {{ $openAppointmentData['status'] }}
Paziente
{{ $openAppointmentData['patient_name'] ?: '—' }}
@if(!empty($openAppointmentData['patient_id'])) @endif
Email
{{ $openAppointmentData['patient_email'] ?: '—' }}
Telefono
{{ $openAppointmentData['patient_phone'] ?: '—' }}
@if(!empty($openAppointmentData['service']))
Prestazione
{{ $openAppointmentData['service']['name'] }}
@endif
@if($openAppointmentData['status'] === 'cancelled')
@else
@endif
@endif