@php // Mapa de dependências para o menu (etapa => etapa anterior necessária) $depMenu = [ 'processamento.juntar' => 'A', 'processamento.validar-qsos' => '1', 'processamento.validar-tempo' => '2', 'processamento.claimed-score' => '3', 'processamento.validar-contatos' => '4', 'processamento.sem-logs' => '5', 'processamento.pontuar' => '6', 'processamento.final-score' => '7', 'processamento.resultado' => '8', 'processamento.records' => '9', 'processamento.encerrar.index' => '10', ]; // Carrega status das etapas do contest ATIVO (para menu Processamento) try { $etapasQuery = \Illuminate\Support\Facades\DB::table('contest_etapas'); if ($contestAtivo) { $etapasQuery->where('contest_id', $contestAtivo->id); } $etapasStatus = $etapasQuery->pluck('status','etapa')->toArray(); } catch (\Throwable) { $etapasStatus = []; } // Carrega status das etapas do contest VISUALIZADO (para menu Relatórios) // Se visualizado = encerrado/arquivado → todos os relatórios liberados // Se visualizado = ativo → respeita etapas reais do ativo // Se visualizado = futuro → tudo bloqueado try { if ($contestVisualizar && $contestAtivo && $contestVisualizar->id !== $contestAtivo->id) { // Contest diferente do ativo $flagVis = $contestVisualizar->flag ?? 0; if (in_array($flagVis, [\App\Models\ContestDate::FLAG_ENCERRADO, \App\Models\ContestDate::FLAG_ARQUIVADO])) { // Encerrado/Arquivado: todos os relatórios liberados $etapasStatusRel = array_fill_keys(['2','5','6','9','10'], 'concluida'); } else { // Futuro: tudo bloqueado $etapasStatusRel = []; } } else { // Visualizando o contest ativo: usa as etapas reais $etapasStatusRel = $etapasStatus; } } catch (\Throwable) { $etapasStatusRel = $etapasStatus; } // Helper: verifica se um item de menu está habilitado $menuHabilitado = function(string $rota) use ($depMenu, $etapasStatus, $emProcessamento) { if ($emProcessamento) return false; if (!isset($depMenu[$rota])) return true; $dep = $depMenu[$rota]; return isset($etapasStatus[$dep]) && $etapasStatus[$dep] === 'concluida'; }; // Flag labels para o seletor do navbar $flagLabels = \App\Models\ContestDate::FLAG_LABELS; @endphp
@if($emProcessamento)
Processamento em andamento. O menu está desabilitado até a conclusão da etapa atual.
@endif @if(session('sucesso'))
✅ {{ session('sucesso') }}
@endif @if(session('erro'))
❌ {{ session('erro') }}
@endif @if($errors->any())
@foreach($errors->all() as $erro)
• {{ $erro }}
@endforeach
@endif @yield('content')