<%= turbo_frame_tag "mailing_live", target: "_top", refresh: "morph" do %> <%= tag.div class: "space-y-6", data: (@mailing.sending? ? { controller: "auto-reload", auto_reload_interval_value: 10_000 } : {}) do %> <%= render "mailings/wizard", mailing: @mailing, current: :review %>

<%= @mailing.name %>

<%= mailing_status_badge(@mailing.status) %> · <%= @mailing.audience_label %> · da <%= @mailing.mail_identity.from_email %> <% if @mailing.ab_test? %> · Test A/B · <%= @mailing.ab_assignment_label %> <% end %> <% if @mailing.interval_seconds.positive? %> · pausa <%= @mailing.interval_seconds %>s <% end %> <% if @mailing.send_window_enabled? %> · fascia <%= @mailing.send_window_label %> <% end %>

<% if @mailing.sending? && @mailing.next_send_at.present? && @mailing.next_send_at > Time.current %>

In pausa fino a <%= l(@mailing.next_send_at, format: :long) %> <% if @mailing.send_window_enabled? %> (fuori fascia o giorno non lavorativo). <% end %>

<% end %>
<%= link_to "Cruscotto invii", dashboard_mailings_path, class: "#{btn_secondary} flex-1 sm:flex-none" %> <% if @mailing.editable? %> <%= link_to "Modifica contenuto", edit_mailing_path(@mailing), class: btn_secondary %> <%= link_to "Raffina destinatari", audience_mailing_path(@mailing), class: btn_secondary %> <%= button_to "Rigenera lista", refresh_recipients_mailing_path(@mailing), method: :post, class: btn_secondary %> <%= render "mailings/delete_draft_button", mailing: @mailing, extra_class: "flex-1 sm:flex-none" %> <% elsif @mailing.sending? || @mailing.paused? %> <%= render "mailings/send_controls", mailing: @mailing %> <% end %>
<% if @mailing.sending? || @mailing.paused? || @mailing.sent? %> <%= render "mailings/progress_card", mailing: @mailing %> <% end %>
Da inviare
<%= @mailing.pending_count %>
Esclusi
<%= @mailing.skipped_count %>
Inviate
<%= @mailing.sent_count %>
Errori
<%= @mailing.failed_count %>
<% if @mailing.sending? || @mailing.paused? || @mailing.sent? || @mailing.cancelled? %>
Aperte
<%= @mailing.opened_count %>

su <%= @mailing.sent_count %> inviate

Tasso apertura
<%= @mailing.open_rate %>%

Si rileva quando il client carica le immagini.

<% end %> <% if @mailing.ab_test? %>
Variante A
<%= ab_variant_badge("A") %>
<%= @mailing.variant_sent_count("A") %> inviate

<%= @mailing.variant_opened_count("A") %> aperte · <%= @mailing.variant_pending_count("A") %> in coda · <%= @mailing.subject %>

Variante B
<%= ab_variant_badge("B") %>
<%= @mailing.variant_sent_count("B") %> inviate

<%= @mailing.variant_opened_count("B") %> aperte · <%= @mailing.variant_pending_count("B") %> in coda · <%= @mailing.subject_b %>

<% end %> <% if @mailing.files.attached? %>
Allegati
<% end %>

Destinatari

<% if @mailing.editable? %>

Spunta chi deve ricevere la mail, poi salva la selezione.

<% end %>
<% if @mailing.editable? && @recipients.empty? %>
Nessuna lista generata. Raffina i filtri e genera la lista congelata. <%= link_to "Scegli destinatari", audience_mailing_path(@mailing), class: "font-medium underline" %>
<% end %> <%= form_with url: update_recipients_mailing_path(@mailing), method: :patch do %>
<% if @mailing.editable? %> <% end %>
<% @recipients.each do |recipient| %>
"> <% if @mailing.editable? %>
<% if recipient.email_ok? %> <%= check_box_tag "pending_ids[]", recipient.id, recipient.pending?, id: "recipient_#{recipient.id}", class: "size-5", data: { check_all_target: "checkbox" } %> <% else %> <% end %>
<% end %>
<%= link_to recipient.organization.name, recipient.organization, class: "font-medium hover:underline" %> <%= mailing_recipient_status_badge(recipient.status) %> <%= mailing_open_badge(recipient) %> <% if @mailing.ab_test? %><%= ab_variant_badge(recipient.ab_variant) %><% end %>
<%= recipient.contact&.full_name.presence || "Nessun contatto" %> · <% if recipient.email_ok? %> <%= recipient.email %> <% else %> <%= recipient.email.presence || "manca email" %> <% end %>
<% if recipient.skip_reason.present? && !recipient.pending? %>
<%= recipient.skip_reason %>
<% end %> <%= mailing_recipient_delivery_note(recipient) %> <% if recipient.sent_at.present? %>
Inviata <%= format_dt(recipient.sent_at) %> <% if recipient.opened? %> · aperta <%= format_dt(recipient.opened_at) %> <% if recipient.open_count > 1 %> · <%= recipient.open_count %> rilevamenti <% end %> <% end %>
<% end %> <% if recipient.email_ok? %> <%= link_to "Anteprima", mailing_path(@mailing, recipient_id: recipient.id, variant: recipient.ab_variant), class: "mt-2 inline-block text-sm text-zinc-700 hover:underline dark:text-zinc-300" %> <% end %>
<% end %>
<% if @mailing.editable? %>
<%= submit_tag "Salva selezione", class: btn_secondary %> I non spuntati restano esclusi da questo invio.
<% end %> <% end %>
<% if @mailing.draft? %>

1. Prova con dati manuali

Compila i campi, controlla l’anteprima e manda una sola email subito a un indirizzo tuo. Non parte l’invio di massa.

<% if @mailing.tested? %>

Ultima prova inviata a <%= @mailing.test_sent_to %> il <%= l(@mailing.test_sent_at, format: :short) %>.

<% end %> <%= render "mailings/test_send_form", mailing: @mailing %>
<% end %>

Anteprima da lista<%= " #{@preview_variant}" if @mailing.ab_test? %>

<% if @preview_recipient %> <%= @preview_recipient.organization.name %> <% end %>
<% if @mailing.ab_test? %>
<%= link_to "Variante A", mailing_path(@mailing, recipient_id: @preview_recipient&.id, variant: "A"), class: @preview_variant == "A" ? btn_primary : btn_secondary %> <%= link_to "Variante B", mailing_path(@mailing, recipient_id: @preview_recipient&.id, variant: "B"), class: @preview_variant == "B" ? btn_primary : btn_secondary %>
<% end %>

<%= @preview_subject %>

<%= sanitize_email_html(@preview_html) %>
<% if @mailing.draft? %>

2. Autorizza l’invio di massa

<% if @mailing.tested? && @mailing.pending_count.positive? %>

Se l’output della prova è corretto, autorizza il job. Partirà rispettando pausa e fascia oraria.

<%= button_to "Autorizza invio a #{@mailing.pending_count} destinatari", queue_mailing_path(@mailing), method: :post, class: btn_primary, form: { data: { turbo_confirm: @mailing.send_window_enabled? ? "Autorizzare l'invio di #{@mailing.pending_count} email da #{@mailing.mail_identity.from_email} nella fascia #{@mailing.send_window_label}?" : "Autorizzare l'invio di #{@mailing.pending_count} email da #{@mailing.mail_identity.from_email}?" } } %> <% elsif @mailing.pending_count.zero? %>

Nessun destinatario da inviare. Spunta almeno un contatto con email valida.

<% else %>

L’invio di massa resta bloccato finché non mandi una prova.

<% end %>
<% end %> <% if @mailing.draft? %> <%= render "mailings/delete_draft_button", mailing: @mailing %> <% end %>
<% end %> <% end %>