@extends('layouts.dental') @section('title', 'Agenda') @section('content')
{{ substr(auth()->user()->name,0,2) }}
{{ auth()->user()->name }}
HOJE {{ $weekStart->locale('pt_BR')->isoFormat('MMMM YYYY') }}
@foreach($days as $day) @php $isToday=$day->isToday(); @endphp @endforeach @for($h=$hourStart;$h<=$hourEnd;$h++) @foreach([0,30] as $min) @foreach($days as $day) @php $dayKey=$day->format('Y-m-d'); $dayApps=$appointments->get($dayKey,collect())->filter(fn($a)=>$a->starts_at->hour==$h&&$a->starts_at->minute==$min); $colors=['agendado'=>'#4CAF50','confirmado'=>'#2196F3','em_atendimento'=>'#FF9800','realizado'=>'#9E9E9E','faltou'=>'#F44336','cancelado'=>'#B0BEC5']; $_dk=['seg','ter','qua','qui','sex','sab','dom'][$day->dayOfWeekIso-1]??null; $_cfg=$_dk&&isset($schedule[$_dk])?$schedule[$_dk]:['active'=>true,'open'=>'07:00','close'=>'20:00']; $_open=$_cfg['active']; $_slotTime=$h+$min/60; $_openH=isset($_cfg['open'])?(int)explode(':',$_cfg['open'])[0]+(int)explode(':',$_cfg['open'])[1]/60:7; $_closeH=isset($_cfg['close'])?(int)explode(':',$_cfg['close'])[0]+(int)explode(':',$_cfg['close'])[1]/60:20; $_inHours=$_slotTime>=$_openH&&$_slotTime<$_closeH; $_available=$_open&&$_inHours; $_bg=!$_open?'#ebebeb':(!$_inHours?'#f5f5f5':($day->isToday()?'#fafcff':'#fff')); @endphp @endforeach @endforeach @endfor
{{ $day->locale('pt_BR')->isoFormat('ddd')}}.
{{ $day->format('d') }} /{{ $day->format('m') }}
@if($min===0){{ str_pad($h,2,'0',STR_PAD_LEFT) }}h00@endif @foreach($dayApps as $apt) @php $heightPx=max((($apt->duration_minutes??30)/30)*32-2,28);$bg=$colors[$apt->status]??'#4CAF50'; @endphp
{{ $apt->starts_at->format('H:i') }} - {{ $apt->ends_at->format('H:i') }}
{{ Str::limit($apt->patient->name,22) }}
@endforeach
{{-- MODAL NOVA CONSULTA --}} {{-- MODAL EDITAR CONSULTA --}} @endsection