{{-- ── Barra de controles (não imprime) ─────────────────────────────── --}}
Voltar | Escala Completa {{ ucfirst($mesObj->locale('pt_BR')->isoFormat('MMMM [de] YYYY')) }} {{-- Seletor de mês --}}
{{-- Alternar formato --}}
Lista Visual
{{-- ── Cabeçalho de impressão ──────────────────────────────────────────── --}}

Escala de Voluntários @if($nomeIgreja) — {{ $nomeIgreja }} @endif

{{ ucfirst($mesObj->locale('pt_BR')->isoFormat('MMMM [de] YYYY')) }} @if(count($eventos) > 0) · {{ count($eventos) }} evento{{ count($eventos) !== 1 ? 's' : '' }} @endif

@if(count($eventos) === 0)

Nenhum evento com escala neste mês.

Verifique o mês selecionado ou as igrejas ativas.

@elseif($formato === 'lista') {{-- ══════════════ FORMATO LISTA ══════════════ --}}
@php $linhas = []; foreach ($eventos as $bloco) { $ev = $bloco['ev']; foreach ($bloco['ocorrencias'] as $oc) { $hora = ($ev->HoraIni && $ev->HoraIni !== '00:00:00') ? substr($ev->HoraIni, 0, 5) : ''; if (empty($oc['escalados'])) { $linhas[] = [ 'data' => $oc['data'], 'label' => $oc['label'], 'titulo' => $ev->Titulo, 'hora' => $hora, 'funcao' => '', 'nome' => '', 'vazio' => true, ]; } else { foreach ($oc['escalados'] as $esc) { $linhas[] = [ 'data' => $oc['data'], 'label' => $oc['label'], 'titulo' => $ev->Titulo, 'hora' => $hora, 'funcao' => $funcoes[$esc->Funcao] ?? $esc->Funcao, 'nome' => $esc->Nome, 'vazio' => false, ]; } } } } // Ordena por data, depois evento usort($linhas, fn($a, $b) => strcmp($a['data'] . $a['titulo'], $b['data'] . $b['titulo'])); $ultimaData = null; $ultimoEvento = null; @endphp @foreach($linhas as $i => $linha) @php $novaData = $linha['data'] !== $ultimaData; $novoEvento = $novaData || $linha['titulo'] !== $ultimoEvento; $ultimaData = $linha['data']; $ultimoEvento = $linha['titulo']; $bg = $i % 2 === 0 ? 'bg-white' : 'bg-gray-50'; @endphp @endforeach
Data Evento Hora Função Escalado(a)
@if($novaData) {{ $linha['label'] }} @endif @if($novoEvento) {{ $linha['titulo'] }} @endif @if($novoEvento && $linha['hora']) {{ $linha['hora'] }} @endif @if($linha['vazio']) Sem escalados @else {{ $linha['funcao'] }} @endif {{ $linha['nome'] }}
@else {{-- ══════════════ FORMATO VISUAL ══════════════ --}} @foreach($eventos as $idx => $bloco) @php $ev = $bloco['ev']; $isUnico = $ev->Frequencia === 'U'; $corAvatar = $isUnico ? 'bg-orange-500' : 'bg-indigo-500'; $corHeader = $isUnico ? 'bg-orange-600' : 'bg-indigo-600'; $corCelPreench = $isUnico ? 'bg-orange-50 border border-orange-200' : 'bg-indigo-50 border border-indigo-200'; $corCelVazioObrig = 'bg-red-50 border border-red-200 border-dashed'; $corCelVazio = $isUnico ? 'bg-orange-50/30 border border-orange-100 border-dashed' : 'bg-gray-50 border border-gray-200 border-dashed'; // Monta grade: funcao => [data => [escalados]] $funcoesUsadas = []; foreach ($bloco['ocorrencias'] as $oc) { foreach ($oc['escalados'] as $esc) { if (!in_array($esc->Funcao, $funcoesUsadas)) $funcoesUsadas[] = $esc->Funcao; } } // Garante PRG e DIR sempre presentes $ordemFuncoes = array_keys($funcoes); $todasFuncoes = array_unique(array_merge(['PRG', 'DIR'], $funcoesUsadas)); usort($todasFuncoes, fn($a, $b) => (array_search($a, $ordemFuncoes) ?? 99) <=> (array_search($b, $ordemFuncoes) ?? 99)); $grade = []; foreach ($todasFuncoes as $f) { $grade[$f] = []; foreach ($bloco['ocorrencias'] as $oc) { $grade[$f][$oc['data']] = array_values(array_filter($oc['escalados'], fn($e) => $e->Funcao === $f)); } } @endphp
{{-- Header do evento --}}

@if($isUnico)@endif {{ $ev->Titulo }}

{{ $bloco['tipo_label'] }} @if($bloco['freq_label']) · {{ $bloco['freq_label'] }} @endif @if($bloco['dia_label']) · {{ $bloco['dia_label'] }} @endif @if($ev->HoraIni && $ev->HoraIni !== '00:00:00') · {{ substr($ev->HoraIni, 0, 5) }} @endif

{{ count($bloco['ocorrencias']) }} ocorrência{{ count($bloco['ocorrencias']) !== 1 ? 's' : '' }}
{{-- Grade --}}
@foreach($bloco['ocorrencias'] as $oc) @endforeach @foreach($grade as $funcao => $porDatas) @php $isObrig = in_array($funcao, ['PRG', 'DIR']); @endphp @foreach($bloco['ocorrencias'] as $oc) @php $celula = $porDatas[$oc['data']] ?? []; @endphp @endforeach @endforeach
Função {{ $oc['label'] }}
{{ $funcoes[$funcao] ?? $funcao }}
@if(count($celula) > 0) @foreach($celula as $esc)
{{ strtoupper(substr($esc->Nome, 0, 1)) }}
{{ explode(' ', $esc->Nome)[0] }}
@endforeach @else
{{ $isObrig ? '— obrig.' : '—' }}
@endif
@endforeach @endif {{-- Rodapé --}}
Gerado em {{ \Carbon\Carbon::now()->locale('pt_BR')->isoFormat('D [de] MMMM [de] YYYY') }}