<% @eventos.each do |evento| %>
<%# Evento desativado fica esmaecido: a lista mistura ativo e inativo e sem
isso os dois pesam igual na varredura visual. %>
<%= evento.nome %>
<%= evento.gatilho_label %>
<% if evento.sistema? %>
sistema
<% end %>
<% unless evento.ativo? %>
desativado
<% end %>
<%= evento.descricao.presence || '—' %>
<% assinantes = evento.assinaturas.select(&:ativo) %>
<% if assinantes.any? %>
Grupos
<% assinantes.each do |a| %>
<%= a.grupo_contato.nome %>
· <%= a.canal_label %>
<% end %>
<% else %>
<%= icone :alerta, cor: nil, tamanho: 'w-3.5 h-3.5', espaco: false %>
Nenhum grupo assina — este evento não manda nada.
<% end %>
<% if evento.agendado? %>
<%= icone :relogio, cor: 'text-gray-500', tamanho: 'w-3.5 h-3.5', espaco: false %>
<%= evento.frequencia == 'semanal' ? "Toda #{Date::DAYNAMES[evento.dia_semana.to_i]}" : 'Todo dia' %>
às <%= format('%02d:00', evento.hora.to_i) %>
<% end %>
<%# Ações: editor de mensagem por canal + editar/excluir %>
<%# O ✓ diz se já existe mensagem montada — sem ela o evento usa o
texto padrão do sistema. %>
<% %w[whatsapp email].each do |canal| %>
<% montado = evento.template_utilizavel(canal).present? %>
<%= link_to template_admin_evento_path(evento, canal: canal), data: { turbo: false },
title: montado ? 'Mensagem montada no editor' : 'Sem mensagem — usa o texto padrão',
class: "inline-flex items-center gap-1.5 px-3 py-2 rounded-xl text-sm border transition-colors #{
montado ? 'bg-green-500/10 border-green-500/30 text-green-300 hover:border-green-500'
: 'bg-[#0a0a0a] border-white/10 text-gray-400 hover:border-[#f97316] hover:text-white'}" do %>
<%= icone(montado ? :sucesso : (canal == 'email' ? :email : :telefone),
cor: nil, tamanho: 'w-4 h-4', espaco: false) %>
<%= canal == 'email' ? 'E-mail' : 'WhatsApp' %>
<% end %>
<% end %>
<%= link_to edit_admin_evento_path(evento), data: { turbo: false },
class: 'p-2 text-gray-400 hover:text-white hover:bg-white/10 rounded-lg transition-colors',
title: 'Editar' do %>
<%= icone :editar, cor: nil, tamanho: 'w-4 h-4', espaco: false %>
<% end %>
<% if evento.apagavel? %>
<%= button_to admin_evento_path(evento), method: :delete,
class: 'p-2 text-gray-600 hover:text-red-400 hover:bg-red-900/20 rounded-lg transition-colors',
title: 'Excluir',
form: { data: { turbo_confirm: "Excluir o evento #{evento.nome}?" } } do %>
<%= icone :excluir, cor: nil, tamanho: 'w-4 h-4', espaco: false %>
<% end %>
<% end %>
<%# Disparo manual: manda mensagem DE VERDADE. %>
<% if evento.manual? && evento.ativo? %>
<%= icone :expandir, cor: nil, tamanho: 'w-4 h-4', espaco: false %> Disparar agora
<% com_template = %w[whatsapp email].any? { |c| evento.template_utilizavel(c) } %>
<%= form_with url: disparar_admin_evento_path(evento), method: :post,
data: { turbo: false }, class: 'mt-4 space-y-3' do |f| %>
<% if com_template %>
<%= icone :sucesso, cor: nil, tamanho: 'w-4 h-4', espaco: false, classe: 'mt-0.5' %>
Este evento tem mensagem montada no editor — ela será usada nos canais configurados.
O texto abaixo só vale para o canal que ainda não tem mensagem própria.
<% end %>
<%= f.text_field :assunto, placeholder: 'Assunto (só e-mail)', value: evento.nome, class: input %>
<%= f.text_area :corpo, rows: 4, required: !com_template, class: input,
placeholder: com_template ? 'Opcional — só para o canal sem mensagem montada' : 'Mensagem que será enviada…' %>
<%= f.submit 'Enviar para os grupos assinantes',
data: { turbo_confirm: 'Isso envia mensagem de verdade para todos os contatos dos grupos assinantes. Confirmar?' },
class: 'px-6 py-3 bg-[#f97316] hover:bg-orange-500 text-white font-semibold
rounded-xl transition-colors cursor-pointer min-h-[48px]' %>
<% end %>
<% end %>
<%= icone :vazio, tamanho: 'w-10 h-10', cor: 'text-gray-600', espaco: false %>
Nenhum evento cadastrado.