@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])
@endforeach
@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