{{--
Central da Sessão — só apresenta o que já existe em outras telas
(Pauta, Quórum e Votação, Ata, Painel Público). Toda ação sensível
(abrir/encerrar votação, confirmar presença, autorizar fala, gerar
Ata) continua acontecendo nas rotas/Controllers/Services de sempre;
os botões daqui só levam pra lá. wire:poll.5s (não mais rápido que
isso — esta tela é uma visão geral, não a tela de votação em si,
que já tem seu próprio wire:poll mais curto em QuorumVotacao).
--}}
@else
{{-- ===================== Sessão ativa ===================== --}}
@php($materiaAtual = $this->materiaEmVotacao)
@php($bloco = $this->blocoAtivo)
@php($fala = $this->falaEmAndamento)
{{-- ===================== Motor Regimental (Etapa C.2) — banner de fase =====================
"ONDE ESTOU?" — só aparece pra sessão com Perfil Regimental associado;
sessão sem perfil não mostra nada disto (comportamento legado). --}}
@if($this->sessao->temPerfilRegimental())
FASE ATUAL: {{ mb_strtoupper($this->sessao->faseRegimentalAtual->nome ?? '') }}
A sessão está em {{ $this->sessao->faseRegimentalAtual->nome ?? '—' }}.
As ações disponíveis dependem do Perfil Regimental configurado.
Você pode realizar as ações habilitadas abaixo.
@endif
@endif
{{-- ===================== Questão de Ordem (Etapa F) =====================
Só aparece quando há alguma ativa — item 6 do pedido: "sem
bloquear a Central inteira". --}}
@if($this->questoesOrdemAtivas->isNotEmpty())
@foreach($this->questoesOrdemAtivas as $qo)
@endforeach
@endif
@if($this->sessao->isSuspensa())
{{-- Sessao.status continua 'ativa' de propósito (ver Sessao::isSuspensa())
— por isso todo o resto da tela (pauta, presença, fila) continua
aparecendo normalmente abaixo, sem perder nenhum estado. --}}
{{ $this->pedidosPendentesCount }} {{ $this->pedidosPendentesCount === 1 ? 'pedido de fala aguardando' : 'pedidos de fala aguardando' }}
@endif
{{-- ===================== Etapa I — Requerimentos/Incidentes: área
operacional sempre visível quando há algo pendente (homologação
item 1 — antes só aparecia dentro de "Outras ações", o operador
não percebia). Nunca recalcula nada: só exibe $this->requerimentosAtivos
(já existente) e chama os mesmos métodos do Service já usados
no Presidente/Vereador. ===================== --}}
@if($this->requerimentosAtivos->isNotEmpty())
@if(in_array($r->status, ['apresentado', 'em_analise']))
{{-- Homologação item 3 — mesmos três caminhos do Presidente,
disponíveis pro operador registrar em nome da autoridade.
Executor sempre = operador autenticado; autoridade
resolvida automaticamente ou selecionada explicitamente
quando ambígua (nunca escolhida arbitrariamente). --}}
@if(! $this->autoridadePresidencialAutomatica)
@error('requerimentoAutoridadeId')
@endif
{{-- ===================== Etapa N — Subscrições de Matéria: instituto
PRÓPRIO de AUTORIA, independente de Requerimentos/Questão de
Ordem acima. Mesmo padrão visual/de decisão (autoridade
automática × seleção manual). ===================== --}}
@if($this->subscricoesPendentes->isNotEmpty())
{{-- ===================== Microetapa "Central Operacional Completa"
— AÇÕES DA SESSÃO, MOVIDO pra cá (não copiado — o card "Ações
principais" que existia lá embaixo, dentro de cs-secundario,
foi removido de lá; este é o único lugar onde ele existe
agora). Mesmos wire:click, hrefs, permissões e conteúdo de
sempre — nenhuma ação foi reimplementada. $acoesSessaoAberta
é uma propriedade NOVA (item 5 do pedido: $outrasAcoesAberto
continua controlando só o sub-painel "Outras ações" abaixo,
um escopo diferente do card inteiro). ===================== --}}
{{-- Correção cirúrgica preservada: nativo trocado por
estado do Livewire ($outrasAcoesAberto) — este componente tem
wire:poll.5s, e o fechava sozinho a cada poll
porque seu `open` é estado do DOM, não do servidor. --}}
@if($outrasAcoesAberto)
{{-- ===================== Microetapa "Console Operacional Completo"
— CENTRAL OPERACIONAL: UMA matéria corrente (item 2/3/4 do
pedido), nunca uma lista. Cada branch abaixo só reaproveita
computeds já existentes (CentralSessaoService) comparando id
com $materiaCorrente — a REGRA de qual estado é qual nunca é
recalculada aqui, só a decisão de QUAL delas exibir agora.
"Último resultado" continua card próprio, mais abaixo. ===================== --}}
@php($materiaDiscussao = $this->materiaEmDiscussao)
@php($materiaDiscussaoEncerrada = $materiaDiscussao ? null : $this->materiaDiscussaoEncerradaAguardandoVotacao)
{{-- Etapa K — três estados do encaminhamento, mutuamente exclusivos
por construção (ver CentralSessaoService, cada um só retorna
não-null no seu próprio momento do fluxo). --}}
@php($materiaAguardandoEncaminhamento = $materiaDiscussao ? null : $this->materiaAguardandoEncaminhamento)
@php($materiaEmEncaminhamento = $materiaDiscussao ? null : $this->materiaEmEncaminhamento)
@php($materiaEncaminhamentoEncerrado = $materiaDiscussao ? null : $this->materiaEncaminhamentoEncerradoAguardandoVotacao)
@php($materiaAtoNaoImplementado = $materiaDiscussao ? null : $this->materiaAguardandoAtoNaoImplementado)
@php($materiaCorrente = $this->materiaCorrente)
@if($bloco)
{{-- Votação em bloco continua fora do conceito de "matéria
corrente" (item 4 do pedido é sobre UMA matéria) —
mesmo tratamento de sempre, inalterado. --}}
@else
{{-- Navegação Recuar/Avançar (item 5/6 do pedido) — SÓ
seleção visual, nunca escreve nada (item 4). Item
26: opção mais segura adotada — desabilitada por
completo enquanto houver qualquer ato ativo na
sessão (ver CentralSessao::navegacaoBloqueada()),
tornando estruturalmente impossível "ver" outra
matéria enquanto uma está ativa. --}}
{{-- Item 25 do pedido — só informativo, derivado de
materiasPendentesAnteriores() (mesma pautaOrdenada(),
nenhuma consulta nova). Nunca bloqueia, nunca navega
sozinho. --}}
@if($materiaCorrente && $this->materiasPendentesAnteriores > 0)
{{ $this->materiasPendentesAnteriores }} {{ $this->materiasPendentesAnteriores === 1 ? 'matéria anterior ainda pendente' : 'matérias anteriores ainda pendentes' }}
@endif
@if(! $materiaCorrente)
@if($this->materiasPendentesAnteriores > 0)
{{-- Item 18 do pedido — CAUSA DO BUG ORIGINAL: o
avanço automático pós-conclusão procurava a
primeira pendente em TODA a pauta, então
voltava sozinho pra uma matéria pulada.
Corrigido em avancarSelecaoAposConclusao()
(só anda pra frente) — quando não sobra
nenhuma pendente À FRENTE, mostra isto em vez
de fazer wrap-around automático. --}}
FIM DA SEQUÊNCIA ATUAL
{{ $this->materiasPendentesAnteriores }} {{ $this->materiasPendentesAnteriores === 1 ? 'matéria anterior ainda pendente' : 'matérias anteriores ainda pendentes' }}.
@endif
@if($this->adiamentoVotacaoVigenteCorrente)
{{-- Etapa O, item 16/18 — guard já bloqueado no BACKEND
(SessaoRegimentalService::erroEstruturalParaAbrirVotacao());
isto aqui é só o reflexo visual, fonte única
AdiamentoMateriaService. --}}
@endif
@elseif($materiaAtoNaoImplementado && $materiaCorrente->id === $materiaAtoNaoImplementado['sessaoMateria']->id)
{{-- Etapa G.1: o Perfil configurou um ato entre discussão e
votação que este sistema ainda não sabe operar — o
Motor NÃO pula pra "Abrir votação" em silêncio. --}}
Ver matéria
{{-- Parte A da Microetapa Fluxo Operacional — Perfil
Leitura→Votação (sem Discussão/Encaminhamento
configurados): "Abrir votação" coexiste com
"Finalizar leitura" (fonte única
SessaoRegimentalService::votacaoDisponivelDuranteLeitura(),
nunca aparece quando o Perfil exige discussão/
encaminhamento antes). O clique encerra
oficialmente a leitura e abre a votação na MESMA
transação (VotacaoMateriaService::abrirIndividual()). --}}
@if(app(\App\Services\SessaoRegimentalService::class)->votacaoDisponivelDuranteLeitura($materiaCorrente))
@endif
@elseif($materiaCorrente->estaRetirada())
{{-- Item 28 do pedido — matéria retirada: nunca oferece
ação, histórico preservado integralmente. --}}
Esta matéria foi retirada — nenhuma ação disponível.
@elseif($materiaCorrente->status === 'finalizada')
{{-- Item 29 do pedido — RECUAR pode alcançar uma
finalizada, mas só consulta, nunca reabre votação. --}}
@else
{{-- Microcorreção, Problema 1 do pedido — CAUSA DO BUG
ORIGINAL: esta branch usava
`comportamento($sessao,'discussao') !== 'bloquear'`
pra decidir se mostrava "Aguardando discussão".
`comportamento()` devolve 'permitir' tanto quando
o ato está configurado como 'permitir' QUANTO
quando o ato simplesmente NÃO EXISTE no Perfil
(ver SessaoRegimentalService::comportamento(),
doc do método) — por isso um Perfil
LEITURA→VOTAÇÃO (sem Discussão configurada)
ainda caía aqui como "permitido", inventando uma
etapa que o Perfil nunca definiu.
CORREÇÃO: usa materiaProntaParaVotacao() —
mesma fonte ÚNICA que a Pauta usa pra decidir se
oferece "Abrir votação" (Perfil-aware de
verdade: só exige leitura/discussão/
encaminhamento concluídos quando
atoConfiguradoExplicitamente() confirma que
cada um deles REALMENTE faz parte do Perfil) —
e atoConfiguradoExplicitamente() (não
comportamento()) pra decidir se mostra
"Aguardando discussão". Nenhuma regra nova: as
duas fontes já existiam no Motor Regimental,
só não estavam sendo consultadas aqui. --}}
@php($materiaCorrentePronta = app(\App\Services\SessaoRegimentalService::class)->materiaProntaParaVotacao($materiaCorrente))
@php($fatosLeituraCorrente = $materiaCorrente->fatosLeitura())
@php($podeAbrirDiscussaoCorrente = ! $materiaCorrentePronta && $fatosLeituraCorrente['encerrada_em'] && ! $materiaCorrente->emDiscussao() && ! $materiaCorrente->discussaoEncerrada() && app(\App\Services\SessaoRegimentalService::class)->atoConfiguradoExplicitamente($this->sessao, 'discussao'))
@endif
{{-- Etapa O, item 15/16/18 — adiamento vigente sempre tem
prioridade sobre "pronta"/"aguardando discussão": o
backend já bloqueia (DiscussaoService::abrir()/
SessaoRegimentalService::erroEstruturalParaAbrirVotacao()),
isto é só o reflexo visual, fonte única
AdiamentoMateriaService. Nunca esconde a leitura em si
(item 27 do pedido original — adiamento nunca reinicia
leitura). --}}
@if($materiaCorrentePronta && $this->adiamentoVotacaoVigenteCorrente)
{{-- ===================== Falas (item 16-22 do pedido) — painel
compacto, complementar ao card "Com a palavra" mais abaixo
(que continua existindo, inalterado, com sorteio de ordem e
fila completa — item 21: "não substituição de toda a tela de
gerenciamento"). Mesmos dados já computados
($fala/restanteSegundosFala/proximosNaFila), mesmas ações já
existentes (autorizarFalaCentral/encerrarFalaCentral, espelho
de PainelOperador::autorizarFala()/encerrarFala()). ===================== --}}
@if($fala || $this->proximosNaFila->isNotEmpty())
@endif
{{-- ===================== Último Resultado (item 19/21 do pedido)
— só lê computed property já existente, nenhuma consulta
nova. Ocupa agora sozinho o espaço que antes dividia com
"Fila Operacional" (removida — ver item 20/17 do relatório:
ficou redundante com a lista de pendentes/próximas que a
própria Central Operacional passou a mostrar). ===================== --}}
{{-- ===================== Timeline recolhível (item 10/11/12 do
pedido) — $timelineAberta é propriedade pública comum (não
Computed, não Computed-reset), preservada pelo Livewire entre
os polls de 5s do topo. Mesmo conteúdo/dados de sempre
($this->timeline, já Computed — count() não gera consulta
extra). ===================== --}}
Timeline completa exige uma futura estrutura de auditoria/eventos — esta lista mostra só o que já está registrado.
@endif
{{-- Microetapa "Central Operacional Completa" — só 2 cards restam
aqui ("Ações principais" foi MOVIDO pra "AÇÕES DA SESSÃO" no
topo, não duplicado); cs-secundario-2col ajusta a grade sem
tocar a regra base (ainda usada, com 3 colunas, no estado
"sem sessão ativa" lá em cima). --}}
{{-- Fase atual (Etapa C) agora vive no banner do topo da Central,
sempre visível (item 2 da Etapa C.2) — não repete a informação
aqui pra não duplicar a mesma coisa em dois lugares. --}}
Os votos registrados nesta tentativa serão desconsiderados do resultado oficial
(continuam preservados no histórico, nunca são apagados). O cancelamento ficará
registrado na linha do tempo da sessã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
{{-- ===================== Microetapa "Console Operacional Completo"
— modais de abrir discussão/votação diretamente na Central.
Mesmo padrão visual dos modais já existentes acima; mesmas
mensagens/condições de PainelOperador::abrirDiscussao()/
iniciarVotacao(int) — nunca uma regra nova, só a mesma
apresentação bloquear/alertar já usada em toda a Central. ===================== --}}
@if($modalDiscussaoBloqueadaCentral)
Discussão não disponível
A abertura de discussão não está disponível na fase atual, conforme o Perfil Regimental desta sessão.
@endif
@if($modalConfirmarDiscussaoCentral)
Confirmar abertura de discussão
Esta ação exige confirmação nesta fase, conforme o Perfil Regimental desta sessão.
@endif
@if($modalVotacaoBloqueadaCentral)
Votação não disponível
A abertura de votação não está disponível agora — verifique se a leitura/discussão/encaminhamento
exigidos pelo Perfil Regimental desta sessão já foram concluídos.
@endif
@if($modalConfirmarVotacaoCentral)
Confirmar abertura de votação
Esta ação exige confirmação nesta fase, conforme o Perfil Regimental desta sessão.
@endif
{{-- Item 14 do pedido — confirmação obrigatória antes de encerrar
votação, mesmo padrão de "Modal: Cancelar votação" acima. Sem
recalcular votos aqui — mesma $this->contagemMateriaAtual já
usada no card. --}}
@if($modalEncerrarVotacaoCentral && $materiaAtual)
O Perfil Regimental desta Câmara prevê um aviso para verificação de quórum durante a fase atual:
{{ $this->sessao->faseRegimentalAtual->nome ?? '—' }}.
@endif
A verificação registra, de forma permanente, quem está presente agora — {{ $this->presentes }} de {{ $this->totalVereadoresAtivos }}.
@endif
{{-- ===================== Modal: Registrar Questão de Ordem em nome do vereador (complemento) ===================== --}}
@if($modalRegistrarQuestaoOrdem)
Registrar Questão de Ordem
Use isto quando o vereador não registrar pelo próprio painel — ele continua sendo o autor;
fica registrado que você fez o lançamento.
O Perfil Regimental desta Câmara prevê um aviso para Questão de Ordem durante a fase atual:
{{ $this->sessao->faseRegimentalAtual->nome ?? '—' }}.
@endif
@error('questaoOrdemVereadorId')
{{ $message }}
@enderror
@error('questaoOrdemTextoCentral')
{{ $message }}
@enderror
@endif
{{-- ===================== Modal: Questão de Ordem bloqueada nesta fase (informativo) ===================== --}}
@if($modalQuestaoOrdemBloqueada)
Questão de Ordem não disponível nesta fase
Fase atual: {{ $this->sessao->faseRegimentalAtual->nome ?? '—' }}
Conforme a configuração do Perfil Regimental, Questão de Ordem está bloqueada nesta fase.
@endif
{{-- ===================== Modal: Decisão da Presidência, lançada pelo operador (complemento) ===================== --}}
@if($modalDecidirQuestaoOrdemCentral)
Decisão da Presidência
Você está registrando no sistema a decisão da Presidência — a autoridade da decisão
continua sendo atribuída a quem preside a sessão, não a você.
@if($this->autoridadePresidencialAutomatica)
Autoridade da decisão: {{ $this->autoridadePresidencialAutomatica->name }}
@else
Não foi possível determinar automaticamente (nenhum ou mais de um registro de Presidência
encontrado) — selecione pra não atribuir a decisão à pessoa errada.
O Perfil Regimental desta Câmara prevê um aviso para requerimentos durante a fase atual:
{{ $this->sessao->faseRegimentalAtual->nome ?? '—' }}.
@endif
{{-- wire:model.live — Etapa O: os campos de prazo do adiamento
(exigeModalidadeAdiamento) precisam reagir assim que o tipo
muda, sem esperar o submit. --}}
@error('requerimentoSolicitanteId')
{{ $message }}
@enderror
{{-- Etapa O, item 10 — Adiamento da Discussão/Votação sempre
informa modalidade/prazo na apresentação (RequerimentoService
rejeita sem isso pra estes dois tipos). --}}
@if($this->exigeModalidadeAdiamento)
@enderror
{{-- Homologação item 1 — a lista de pendentes com ações passou
a viver numa área sempre visível na Central (ver acima de
"cs-alertas"), não mais escondida aqui dentro de "Outras
ações". Este modal agora é só o formulário de apresentar
um requerimento novo. --}}
@endif
{{-- ===================== Etapa I — Modal: Requerimentos bloqueados nesta fase (informativo) ===================== --}}
@if($modalRequerimentoBloqueado)
Requerimentos não disponíveis nesta fase
Fase atual: {{ $this->sessao->faseRegimentalAtual->nome ?? '—' }}
Conforme a configuração do Perfil Regimental, requerimentos estão bloqueados nesta fase.
@endif
{{-- ===================== Modal: Mensagem no Telão ===================== --}}
@if($modalMensagemTelao)
Mensagem no Telão
A mensagem é só uma camada de apresentação — não altera status, votação, matéria, fala
nem cronômetro. Quando ocultada, o telão volta sozinho ao que estiver acontecendo de verdade.