@extends('layouts.app') @section('title', $titulo ?? 'Contatos Invalidados') @section('content') @include('components.seletor-contest')

❌ {{ $titulo ?? 'Contatos Invalidados' }}

@if(!empty($descricao))

{!! $descricao !!}

@endif
{{ number_format($totalGeral) }}
Total Invalidados
{{ count($grupos) }}
Operadores
{{-- Filtros --}}
@if($busca || $motivo) ✕ Limpar @endif
{{-- Legenda --}}
Call Rcvd com ≥3 contatos confirmados na 1ª hora 1 = válido   0 = inválido   = não aplicável (NULL)
@forelse($grupos as $callSent => $qsos)
{{-- Cabeçalho do grupo --}}
Call Sent: {{ $callSent }} {{ count($qsos) }} registro(s)
@foreach($qsos as $r) @php $primeiraHora = date('Y-m-d H:59:59', strtotime($r->date_time)); $confsRcvd = isset($confirmados[$r->call_rcvd]) ? $confirmados[$r->call_rcvd]->filter(fn($c) => $c->date_time >= $r->date_time && $c->date_time <= $primeiraHora) ->values() : collect(); $highlight = $confsRcvd->count() >= 3; // Colorir células com valor 0 (inválido) // Estilo: null=cinza(n/a), 0=vermelho(inválido), 1=verde(válido) $stv = function($v) { if (is_null($v)) return 'color:#bbb'; return $v == 0 ? 'color:#C62828;font-weight:bold' : 'color:#2E7D32'; }; $stl = function($v) { if (is_null($v)) return '—'; return $v; }; @endphp @php // Sanitiza motivo corrompido (charset issues do banco) $mot = $r->motivo ?? ''; $mot = mb_convert_encoding($mot, 'UTF-8', 'UTF-8'); $mot = preg_replace('/[^ -~À-ÿ]/u', '?', $mot); @endphp @if($highlight) @endif @endforeach
Call Sent Call Rcvd Exch Sent Exch Rcvd Contest Name Date Time Categoria Participante V.Contest V.Date V.Categ V.Exch V.HQ V.Tempo V.TrocaBnd V.Contato Motivo
{{ $r->call_sent }} {{ $r->call_rcvd }} {{ $r->exch_sent }} {{ $r->exch_rcvd }} {{ $r->contest_name }} {{ $r->date_time }} {{ $r->categoria_participante }} {{ $stl($r->valid_contest) }} {{ $stl($r->valid_date) }} {{ $stl($r->valid_categoria) }} {{ $stl($r->valid_exchange) }} {{ $stl($r->valid_hq) }} {{ $stl($r->valid_tempqso) }} {{ $stl($r->valid_trocaband) }} {{ $stl($r->confirmado) }}{{ $mot }}
{{ $r->call_rcvd }} — {{ $confsRcvd->count() }} contatos confirmados na 1ª hora: {{ $confsRcvd->map(fn($c) => "{$c->call_sent} ({$c->date_time})")->implode(' | ') }}
Total de registros para {{ $callSent }}: {{ count($qsos) }}
@empty

Nenhum contato invalidado encontrado.

@endforelse @if($totalGeral > 0)
Total geral de registros inválidos: {{ number_format($totalGeral) }}
@endif @endsection