@extends('layouts.app') @section('title', 'Agenda Operacional') @section('page_title', 'Agenda Operacional') @section('content') @php $preservar = request()->except(['data', 'modo']); $weekday = [1 => 'Segunda-feira', 2 => 'Terça-feira', 3 => 'Quarta-feira', 4 => 'Quinta-feira', 5 => 'Sexta-feira', 6 => 'Sábado', 7 => 'Domingo']; $statusClasses = [ 'programado' => 'bg-blue-100 text-blue-800 border-blue-200', 'em_execucao' => 'bg-indigo-100 text-indigo-800 border-indigo-200', 'concluido' => 'bg-emerald-100 text-emerald-800 border-emerald-200', 'cancelado' => 'bg-red-100 text-red-700 border-red-200', 'negado' => 'bg-orange-100 text-orange-700 border-orange-200', ]; @endphp
Hoje
{{ $modo === 'dia' ? $inicio->format('d/m/Y') : $inicio->format('d/m').' — '.$fim->format('d/m/Y') }}
{{ $resumo['total'] }} operação(ões) · {{ $fontes[$fonte] }}
@foreach([ ['Sistema', $resumo['sistema'], 'border-slate-200'], ['Importados', $resumo['importados'], 'border-violet-200'], ['Programadas', $resumo['programadas'], 'border-blue-200'], ['Em execução', $resumo['em_execucao'], 'border-indigo-200'], ['Concluídas', $resumo['concluidas'], 'border-emerald-200'], ['Postergadas', $resumo['postergadas'], 'border-amber-200'], ['Conflitos', $resumo['criticos'], 'border-red-300'], ['Atenções', $resumo['atencoes'] + $resumo['sem_motorista'] + $resumo['sem_cavalo'], 'border-orange-200'], ] as [$label,$valor,$border])
{{ $valor }}
{{ $label }}
@endforeach
Limpar filtros Abrir Agenda Histórica
@if($resumo['sem_motorista'] || $resumo['sem_cavalo'] || $resumo['criticos'])
@if($resumo['criticos']){{ $resumo['criticos'] }} operação(ões) com conflito crítico.@endif @if($resumo['sem_motorista']){{ $resumo['sem_motorista'] }} operação(ões) ativa(s) sem motorista.@endif @if($resumo['sem_cavalo']){{ $resumo['sem_cavalo'] }} operação(ões) ativa(s) sem cavalo.@endif
@endif
@foreach($dias as $dia) @php $lista = $itensPorDia[$dia->toDateString()] ?? collect(); $hoje = $dia->isToday(); @endphp
{{ $weekday[$dia->dayOfWeekIso] ?? '' }}, {{ $dia->format('d/m') }}@if($hoje)Hoje@endif
{{ $lista->count() }} operação(ões)
@if($lista->isEmpty())
Nenhuma operação encontrada para este dia.
@else
@foreach($lista as $item) @php $conflito=$item->agenda_conflito_nivel; $border=$conflito==='critico'?'border-l-red-500':($conflito==='atencao'?'border-l-orange-400':'border-l-transparent'); @endphp
{{ $item->hora_coleta ?: '—:—' }}
{{ $item->numero_os ?: 'Sem nº OS' }}
{{ $item->fonte_label }}
{{ $item->cliente ?: 'Cliente não informado' }}{{ $item->status_label }}@if($item->postergado)Postergado@endif
{{ $item->origem ?: '—' }} {{ $item->destino ?: '—' }}
@if($item->sonda)Sonda: {{ $item->sonda }}@endif @if($item->tipo_veiculo)Tipo: {{ $item->tipo_veiculo }}@endif
@if($conflito)
@foreach($item->agenda_conflito_motivos as $motivo)
⚠ {{ $motivo }}
@endforeach
@endif
Motorista {{ $item->motorista ?: 'Não alocado' }}
Cavalo {{ $item->cavalo ?: 'Não alocado' }}
Carreta {{ $item->carreta ?: '—' }}
@if($item->fonte==='sistema' && $item->os_id)Abrir OS @elseif($item->fonte==='importados' && auth()->user()->hasRole('superadmin'))Auditar@endif
@endforeach
@endif
@endforeach
@foreach([['Motoristas mais alocados',$ocupacao['motoristas']],['Cavalos mais alocados',$ocupacao['cavalos']]] as [$titulo,$dados])
{{ $titulo }}
@forelse($dados as $item)
{{ $item['label'] }}{{ $item['total'] }} operações · {{ $item['dias'] }} dia(s)
@empty
Sem alocações no período.
@endforelse
@endforeach
Em “Ambos”, os conflitos são avaliados em conjunto entre OS do Sistema e registros Importados. Conflito crítico = mesmo motorista, cavalo ou carreta em mais de uma operação ativa no mesmo dia e horário. Atenção = recurso repetido no mesmo dia em horários diferentes.
@endsection