<% ctx = { status: params[:status], canal: params[:canal] }.compact_blank %>

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 %>
<% @envios.each do |envio| %> <% end %>
Quando Evento Destinatário Canal Situação Mensagem
<%= 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) %>
<% if @pagy.pages > 1 %> <% pag = ->(p) { admin_envios_path(ctx.merge(page: p)) } %> <% end %> <% end %>