Sessão #{{ $sessao->numero }} — {{ $sessao->tipo }}
{{ $sessao->data_sessao->format('d/m/Y') }}
{{-- Homologação itens 21-24 — hierarquia visual só nesta tela (não é reforma global): PRIMÁRIO = fundo sólido/texto branco (ação operacional principal); SECUNDÁRIO = outline colorido; APOIO = discreto/neutro. Cor semântica por família de ação (verde = avançar/votação, azul = navegação/informação, roxo = resumo/ finalização, laranja = histórico/atenção, azul-escuro = projeção). Nenhum href/route/wire:click mudou. --}}
Ir para Quórum e Votação Resumo da Sessão Resumo Final Histórico da Sessão
{{-- Controle de inscrições — botão que abre modal --}} @if(count($this->momentosComEstado)) @php($abertos = collect($this->momentosComEstado)->filter(fn ($i) => $i['estado']->aberto)->count())
Inscrições @if($abertos) {{ $abertos }} aberto(s) @endif
@endif {{-- Pedidos de vista --}} @if($this->pedidosVistaPendentes->count())
Pedidos de vista
@foreach($this->pedidosVistaPendentes as $pedido)
{{ $pedido->vereador->name }} pediu vista de {{ $pedido->sessaoMateria->materia->titulo }}
@endforeach
@endif {{-- Pedidos de fala — visível no topo, com aviso quando chega um novo --}} @if($this->falaEmAndamento || $this->pedidosPendentes->count())
Pedidos de fala @if($this->falaEmAndamento) @php($falaAtual = $this->falaEmAndamento) @php($restante = $this->restanteFalaAtual ?? 0)
@if($falaAtual->isAparte()) Aparte @elseif($falaAtual->isAvulso()) Convidado @endif {{ $falaAtual->nomeExibicao() }} @if($pontoAudio = $this->pontoAudioDoPedido($falaAtual)) • {{ $pontoAudio }} @endif falando — {{ sprintf('%02d:%02d', intdiv($restante, 60), $restante % 60) }}
@unless($falaAtual->isAparte()) @php($incrementoFala = \App\Models\Configuracao::atual()->incremento_tempo_fala_padrao) @endunless
@endif @if($this->pedidosPendentes->count())
@foreach($this->pedidosPendentes as $pedido)
@if($pedido->isAparte()) Aparte @elseif($pedido->labelMomento()) {{ $pedido->labelMomento() }} #{{ $pedido->ordem }} @endif {{ $pedido->nomeExibicao() }} — {{ $pedido->tempo_solicitado }} min
@endforeach
@endif
@endif {{-- Bloco de votação ativo (resumo) --}} @if($this->blocoAtivo)
📦 Votação em bloco aberta
@foreach($this->blocoAtivo->itens as $item)
{{ $item->materia->titulo }}
@endforeach
Favor: {{ $this->contagemBloco['favor'] }} Contra: {{ $this->contagemBloco['contra'] }} Abstenção: {{ $this->contagemBloco['abstencao'] }}
@endif {{-- Matéria em votação (resumo) --}} @if($this->materiaAtual)
Votação aberta agora {{ $this->materiaAtual->materia->titulo }}
Favor: {{ $this->contagem['favor'] }} Contra: {{ $this->contagem['contra'] }} Abstenção: {{ $this->contagem['abstencao'] }}
{{-- Motor de Quórum Deliberativo — discreto, só informativo (item 21 do pedido: não antecipa "aprovada" antes do encerramento). --}} @php($deliberacaoAtual = $this->materiaAtual->deliberacaoCongelada()) @if($deliberacaoAtual)
Regra: {{ $deliberacaoAtual['regra_nome'] }} @if($deliberacaoAtual['necessarios'] !== null) · Necessários: {{ $deliberacaoAtual['necessarios'] }} @endif
@endif
@endif {{-- Adicionar matéria --}}
Pauta da sessão
{{-- Homologação item 22 — ação importante, destacada (fundo sólido) em vez de secundária. Mesmo @click/modal de antes. --}}

Matéria vinculada assim entra automaticamente em "Expediente" — mova depois se precisar.

{{-- As quatro fases --}} {{-- Pauta da sessão --}} @if(count($selecionadas) >= 2)
{{ count($selecionadas) }} matérias selecionadas @if($this->comportamentoVotacao === 'bloquear') @elseif($this->comportamentoVotacao === 'alertar') @else @endif
@endif @foreach($this->fases as $faseChave => $faseRotulo) @php($itens = $esconderVotadas ? $this->materiasPorFase[$faseChave]->where('status', '!=', 'finalizada')->values() : $this->materiasPorFase[$faseChave])
{{ $faseRotulo }} {{ $itens->count() }}
@forelse($itens as $sm)
@if($sm->status === 'aguardando' && ! $this->materiaAtual && ! $this->blocoAtivo) id, $selecionadas)) style="width:auto; margin:0"> @else @endif
{{ $sm->materia->titulo }} {{ $sm->status }} @if($sm->resultado) {{ $sm->resultado }} @endif @if($sm->em_leitura) 📖 Em leitura @endif @if($sm->emDiscussao()) 🗣️ Discussão aberta @elseif($sm->discussaoEncerrada()) Discussão encerrada @endif @if($this->materiaEmEncaminhamento && $this->materiaEmEncaminhamento->id === $sm->id) 🧭 Encaminhamento em andamento @elseif($sm->encaminhamentoEncerrado()) Encaminhamento encerrado @endif @if($sm->votacao_bloco_id) 📦 Em bloco @endif @php($vistaDeferida = $sm->pedidosVista->first(fn ($p) => $p->status === 'deferido' && ! $p->liberado_em)) @if($vistaDeferida) 👁️ Em vista @endif
{{ $sm->materia->autor->name ?? '—' }}
{{-- Etapa G.1 — controle ÚNICO de leitura: um só botão, que troca de rótulo/ação conforme o estado. Não iniciada → liga. Em leitura → encerra e consulta o Motor Regimental (toggleLeitura() delega inteiramente pra encerrarLeituraEAvancar() nesse caso — ver PHP). Desabilitado enquanto ESSA matéria está em votação. --}} {{-- Etapa O, item 17 — mesmo impedimento que a Central: nunca oferece "Abrir votação" enquanto um Adiamento da Votação estiver vigente pra esta matéria (fonte única AdiamentoMateriaService — backend já bloqueia via SessaoRegimentalService::erroEstruturalParaAbrirVotacao(), isto aqui é só a Blade refletindo o mesmo fato). --}} @php($adiamentoVotacaoTexto = $this->textoAdiamentoVotacaoVigente($sm)) @if($sm->status === 'aguardando' && $adiamentoVotacaoTexto) 🟠 Votação adiada @elseif($sm->status === 'aguardando' && ($this->materiaProntaParaVotacao($sm) || $this->votacaoDisponivelDuranteLeitura($sm)) && ! $this->materiaAtual && ! $this->blocoAtivo && ! $vistaDeferida) @if($this->comportamentoVotacao === 'bloquear') @elseif($this->comportamentoVotacao === 'alertar') @else @endif @elseif($sm->status === 'votacao_aberta' && ! $sm->votacao_bloco_id)
@elseif($sm->status === 'votacao_aberta' && $sm->votacao_bloco_id) @endif {{-- Discussão (Etapa D) — "Encerrar discussão" continua ação principal enquanto aberta. A abertura MANUAL (exceção/ contingência — item 17 da homologação) fica atrás de "Outras ações": o fluxo normal é o automático da Etapa G, isto aqui nunca é a ação principal da matéria. Não aparece mais depois que a matéria já foi votada (finalizada). --}} @if($sm->status !== 'finalizada') @if($sm->emDiscussao()) @elseif(! $sm->discussaoEncerrada()) @if(in_array($sm->id, $this->outrasAcoesMateriaIds)) @if($this->comportamentoDiscussao === 'bloquear') @elseif($this->comportamentoDiscussao === 'alertar') @else @endif @endif @endif @endif {{-- Encaminhamento (Etapa K) — ação principal só na matéria que o Motor Regimental já apontou como candidata (discussão encerrada + Perfil exige encaminhamento). NUNCA aparece junto com "Abrir votação": materiaProntaParaVotacao() já bloqueia isso enquanto o encaminhamento não estiver concluído (item 23/32 do pedido). --}} @if($sm->status !== 'finalizada') @if($this->materiaAguardandoEncaminhamento && $this->materiaAguardandoEncaminhamento->id === $sm->id) @php($comportamentoEncaminhamento = app(\App\Services\SessaoRegimentalService::class)->comportamento($this->sessao, 'encaminhamento')) @if($comportamentoEncaminhamento === 'bloquear') @elseif($comportamentoEncaminhamento === 'alertar') @else @endif @elseif($this->materiaEmEncaminhamento && $this->materiaEmEncaminhamento->id === $sm->id) @endif @endif
{{-- Painel de acompanhamento do encaminhamento — orador atual, próximo da fila e contagem de inscritos (item 9 do pedido: "não criar seis botões novos", só o essencial). --}} @if($this->materiaEmEncaminhamento && $this->materiaEmEncaminhamento->id === $sm->id)
ENCAMINHAMENTO EM ANDAMENTO
@if($this->falaEncaminhamentoAtiva)
Com a palavra: {{ $this->falaEncaminhamentoAtiva->nomeExibicao() }}
@else
Ninguém com a palavra agora.
@endif @if($this->filaEncaminhamento->isNotEmpty())
Próximo: {{ $this->filaEncaminhamento->first()->nomeExibicao() }} Inscritos: {{ $this->filaEncaminhamento->count() }}
@else
Nenhum inscrito na fila.
@endif
@endif @empty

Nenhuma matéria nesta fase.

@endforelse
@endforeach {{-- ===================== Modal: Cancelar votação ===================== Mesmo texto/opções/regra da Central da Sessão (Admin\CentralSessao) — só o backend real é reutilizado (CentralSessaoService::cancelarVotacao()), essa view apenas espelha o modal pra não obrigar o operador a trocar de tela. --}} @if($modalCancelarVotacao && $this->materiaAtual)

Cancelar esta votação?

Os votos registrados nesta tentativa serão desconsiderados do resultado oficial (continuam preservados no histórico, nunca são apagados). O cancelamento ficará registrado no histórico da sessão.
@if($motivoCancelamento === 'Outro') @endif @error('motivoCancelamento')
{{ $message }}
@enderror
@endif {{-- ===================== Modal: aviso regimental antes de votar (comportamento = alertar) ===================== A MESMA rotina de abertura (executarAberturaVotacaoIndividual/executarAberturaVotacaoBloco) roda depois de confirmar — nada é duplicado, ver App\Livewire\Admin\PainelOperador:: confirmarAberturaVotacaoComExcecao(). --}} @if($modalConfirmarVotacaoRegimental)

Atenção

O Perfil Regimental desta Câmara prevê um aviso para votação durante a fase atual: {{ $this->sessao->faseRegimentalAtual->nome ?? '—' }}.
@if($confirmandoVotacaoBloco)

{{ count($selecionadas) }} matérias selecionadas pra votação em bloco.

@elseif($this->materiaEmConfirmacaoRegimental)

Matéria: {{ $this->materiaEmConfirmacaoRegimental->materia->tipo }} nº {{ $this->materiaEmConfirmacaoRegimental->materia->numero }}/{{ $this->materiaEmConfirmacaoRegimental->materia->ano }}

@endif

Deseja prosseguir por determinação da Presidência?

@endif {{-- ===================== Modal: votação bloqueada nesta fase (comportamento = bloquear, só informativo) ===================== Sem opção de "prosseguir mesmo assim" — bloquear é bloquear. --}} @if($modalVotacaoBloqueada)

Votação não disponível nesta fase

Fase atual: {{ $this->sessao->faseRegimentalAtual->nome ?? '—' }}

Conforme a configuração do Perfil Regimental, a votação está bloqueada nesta fase.

@endif {{-- ===================== Modal: aviso regimental antes de abrir discussão (comportamento = alertar) ===================== --}} @if($modalConfirmarDiscussaoRegimental)

Atenção

O Perfil Regimental exige confirmação para iniciar discussão durante a fase atual: {{ $this->sessao->faseRegimentalAtual->nome ?? '—' }}.
@endif {{-- ===================== Modal: discussão bloqueada nesta fase (comportamento = bloquear, só informativo) ===================== --}} @if($modalDiscussaoBloqueada)

Discussão não disponível nesta fase

Fase atual: {{ $this->sessao->faseRegimentalAtual->nome ?? '—' }}

Conforme a configuração do Perfil Regimental, a discussão está bloqueada nesta fase.

@endif {{-- ===================== Modal: aviso regimental antes de abrir encaminhamento (Etapa K, comportamento = alertar) ===================== --}} @if($modalConfirmarEncaminhamentoRegimental)

Atenção

O Perfil Regimental exige confirmação para abrir encaminhamento durante a fase atual: {{ $this->sessao->faseRegimentalAtual->nome ?? '—' }}.
@endif {{-- ===================== Modal: encaminhamento bloqueado nesta fase (Etapa K, comportamento = bloquear, só informativo) ===================== --}} @if($modalEncaminhamentoBloqueado)

Encaminhamento não disponível nesta fase

Fase atual: {{ $this->sessao->faseRegimentalAtual->nome ?? '—' }}

Conforme a configuração do Perfil Regimental, o encaminhamento está bloqueado nesta fase.

@endif {{-- ===================== Modal: confirmar avanço automático leitura → discussão (Etapa G, comportamento = alertar) ===================== --}} @if($modalConfirmarAvancoDiscussao)

Atenção

A leitura foi encerrada. A abertura da discussão exige confirmação, conforme o Perfil Regimental desta Câmara para a fase atual: {{ $this->sessao->faseRegimentalAtual->nome ?? '—' }}.
@endif