@extends('layouts.app') @section('title', 'Solicitações — Operador') @section('page_title', 'Painel do Operador — Solicitações de Transporte') @section('content')
{{-- Resumo / atalhos rápidos --}}

{{ $contadores['total'] }}

Todas

{{ $contadores['enviadas'] }}

Aguardando análise

{{ $contadores['em_analise'] }}

Em análise

{{ $contadores['aprovadas'] }}

Aprovadas

{{ $contadores['rejeitadas'] }}

Rejeitadas

{{ $contadores['canceladas'] }}

Canceladas

{{-- Filtros + botão Nova --}}
@if(request()->hasAny(['search','status','data_de','data_ate'])) Limpar @endif
Nova Solicitação
{{-- Tabela --}}
@forelse($solicitacoes as $sol) @php $sc = $sol->statusColor(); $colorMap = ['gray'=>'bg-gray-100 text-gray-700','blue'=>'bg-blue-100 text-blue-700','yellow'=>'bg-yellow-100 text-yellow-700','green'=>'bg-green-100 text-green-800','indigo'=>'bg-indigo-100 text-indigo-800','teal'=>'bg-teal-100 text-teal-800','red'=>'bg-red-100 text-red-700']; $badgeClass = $colorMap[$sc] ?? 'bg-gray-100 text-gray-700'; $itensComData = $sol->itens->filter(fn($i) => $i->data_coleta)->sortBy(function($i) { return $i->data_coleta->format('Y-m-d') . ' ' . ($i->hora_coleta ? substr((string)$i->hora_coleta, 0, 5) : '99:99'); }); $primeiraColeta = $itensComData->first(); $horariosDistintos = $itensComData->map(fn($i) => $i->data_coleta->format('Y-m-d') . ' ' . ($i->hora_coleta ? substr((string)$i->hora_coleta, 0, 5) : ''))->unique()->count(); $agendaConflito = $conflitosLista[$sol->id] ?? null; $temConflitoSistema = $agendaConflito && ($agendaConflito['sistema'] ?? 0) > 0; @endphp @empty @endforelse
Itens Solicitado para Ações
{{ $sol->numero_solicitacao }}
@if($sol->pedido_cliente)
Pedido: {{ $sol->pedido_cliente }}
@endif
{{ $sol->cliente?->nome_fantasia ?? $sol->cliente?->razao_social ?? '—' }} {{ $sol->assunto ?? '—' }} {{ $sol->itens->count() }} @if($primeiraColeta)
{{ $primeiraColeta->data_coleta->format('d/m/Y') }}
{{ $primeiraColeta->hora_coleta ? substr((string)$primeiraColeta->hora_coleta, 0, 5) : 'Sem horário' }} @if($horariosDistintos > 1) +{{ $horariosDistintos - 1 }} horário(s) @endif
@if($agendaConflito)
{{ $temConflitoSistema ? '⛔' : '⚠' }} {{ $agendaConflito['total'] }} coincidência(s)
@if(($agendaConflito['sistema'] ?? 0) > 0) Sistema/OS: {{ $agendaConflito['sistema'] }} @endif @if(($agendaConflito['sistema'] ?? 0) > 0 && ($agendaConflito['importados'] ?? 0) > 0) · @endif @if(($agendaConflito['importados'] ?? 0) > 0) Importados: {{ $agendaConflito['importados'] }} @endif
@endif @else @endif
{{ $sol->created_at->format('d/m/Y H:i') }} {{ $sol->operador?->name ?? '—' }} {{ $sol->statusLabel() }} @if($sol->status === 'cancelada' && filled($sol->justificativa_rejeicao))

{{ $sol->justificativa_rejeicao }}

@endif
Abrir @if(!in_array($sol->status, ['concluida','cancelada'])) Editar @endif @if($sol->status === 'enviada' && !$sol->operador_id)
@csrf @method('PATCH')
@endif
Nenhuma solicitação encontrada.
{{ $solicitacoes->links() }}
@endsection