Envios
O que saiu, para quem e se chegou. Uma falha de envio nunca trava o fechamento —
então é aqui que ela aparece.
<% [['', 'Todos'], ['enviado', 'Enviados'], ['falhou', 'Falhados'], ['pendente', 'Pendentes']].each do |valor, rotulo| %>
<% ativo = params[:status].to_s == valor %>
<%= link_to rotulo, admin_envios_path(ctx.merge(status: valor.presence).compact), data: { turbo: false },
class: "px-3 py-2 rounded-xl text-sm border #{ativo ? 'bg-orange-500 text-black border-orange-500 font-bold' : 'bg-[#1a1a1a] text-gray-300 border-white/10 hover:border-orange-500'}" %>
<% end %>
|
<% [['', 'Todos os canais'], ['whatsapp', 'WhatsApp'], ['email', 'E-mail']].each do |valor, rotulo| %>
<% ativo = params[:canal].to_s == valor %>
<%= link_to rotulo, admin_envios_path(ctx.merge(canal: valor.presence).compact), data: { turbo: false },
class: "px-3 py-2 rounded-xl text-sm border #{ativo ? 'bg-orange-500 text-black border-orange-500 font-bold' : 'bg-[#1a1a1a] text-gray-300 border-white/10 hover:border-orange-500'}" %>
<% end %>
<% if @total_falhas.positive? %>
<%= @total_falhas %> falha(s) neste filtro
<% end %>
<% if @envios.empty? %>
Nenhum envio registrado ainda.
<% else %>
| Quando |
Evento |
Destinatário |
Canal |
Situação |
Mensagem |
<% @envios.each do |envio| %>
| <%= envio.created_at.strftime('%d/%m/%Y %H:%M') %> |
<%= envio.evento_notificacao&.nome || '—' %> |
<%= envio.contato&.nome || envio.user&.nome || '—' %>
<%= envio.destino %>
|
<%= envio.canal == 'whatsapp' ? 'WhatsApp' : 'E-mail' %> |
<% cor = { 'enviado' => 'text-green-400', 'falhou' => 'text-red-400' }.fetch(envio.status, 'text-yellow-400') %>
<%= envio.status.capitalize %>
<% if envio.falhou? && envio.erro.present? %>
<%= envio.erro.truncate(160) %>
<% end %>
|
<%= envio.corpo.to_s.truncate(90) %>
|
<% end %>
<% if @pagy.pages > 1 %>
<% pag = ->(p) { admin_envios_path(ctx.merge(page: p)) } %>
<% end %>
<% end %>