diff --git a/app/controllers/submission_events_controller.rb b/app/controllers/submission_events_controller.rb
index b3b892f11..9188bd01a 100644
--- a/app/controllers/submission_events_controller.rb
+++ b/app/controllers/submission_events_controller.rb
@@ -12,6 +12,7 @@ class SubmissionEventsController < ApplicationController
'send_2fa_sms' => '2fa',
'send_2fa_email' => '2fa',
'send_sms' => 'send',
+ 'fail_sms' => 'alert_circle',
'phone_verified' => 'phone_check',
'email_verified' => 'email_check',
'click_sms' => 'hand_click',
diff --git a/app/models/submission_event.rb b/app/models/submission_event.rb
index e88d192fd..59eda0201 100644
--- a/app/models/submission_event.rb
+++ b/app/models/submission_event.rb
@@ -45,6 +45,7 @@ class SubmissionEvent < ApplicationRecord
send_email: 'send_email',
bounce_email: 'bounce_email',
complaint_email: 'complaint_email',
+ fail_sms: 'fail_sms',
send_reminder_email: 'send_reminder_email',
send_sms: 'send_sms',
send_2fa_sms: 'send_2fa_sms',
diff --git a/app/views/submission_events/index.html.erb b/app/views/submission_events/index.html.erb
index 821b54a98..a0b88ea11 100644
--- a/app/views/submission_events/index.html.erb
+++ b/app/views/submission_events/index.html.erb
@@ -50,8 +50,11 @@
<% elsif event.event_type == 'delegate_form' %>
<% delegate_from = event.data['old_email'].presence || versions.rfind { |v| v.created_at <= event.event_timestamp }&.then { |v| v.name || v.phone } %>
<%= t('submission_event_names.delegate_form_by_html', from: delegate_from, to: event.data['email']) %>
- <% elsif event.event_type.include?('send_') %>
+ <% elsif event.event_type.include?('send_') || event.event_type == 'fail_sms' %>
<%= t("submission_event_names.#{event.event_type}_to_html", submitter_name:) %>
+ <% if event.data['error_code'].present? %>
+ (<%= t('error') %>: <%= event.data['error_code'] %>)
+ <% end %>
<% elsif event.event_type.start_with?('bounce_') || event.event_type.start_with?('complaint_') %>
<%= t("submission_event_names.#{event.event_type}_html", submitter_name:) %>
<% else %>
diff --git a/config/locales/i18n.yml b/config/locales/i18n.yml
index 55ae36830..346c41802 100644
--- a/config/locales/i18n.yml
+++ b/config/locales/i18n.yml
@@ -1046,10 +1046,12 @@ en: &en
link: Link
mcp: MCP
self: Sign Yourself
+ error: Error
submission_event_names:
send_email_to_html: 'Email sent to %{submitter_name}'
bounce_email_html: 'Email bounced %{submitter_name}'
complaint_email_html: 'Spam complaint %{submitter_name}'
+ fail_sms_to_html: 'SMS failed to %{submitter_name}'
send_reminder_email_to_html: 'Reminder email sent to %{submitter_name}'
send_sms_to_html: 'SMS sent to %{submitter_name}'
send_2fa_sms_to_html: 'Verification SMS sent to %{submitter_name}'
@@ -2196,10 +2198,12 @@ es: &es
link: Enlace
mcp: MCP
self: Firma tú mismo
+ error: Error
submission_event_names:
send_email_to_html: 'Correo electrónico enviado a %{submitter_name}'
bounce_email_html: 'Correo electrónico rebotado %{submitter_name}'
complaint_email_html: 'Queja de spam %{submitter_name}'
+ fail_sms_to_html: 'SMS fallido a %{submitter_name}'
send_reminder_email_to_html: 'Correo de recordatorio enviado a %{submitter_name}'
send_sms_to_html: 'SMS enviado a %{submitter_name}'
send_2fa_sms_to_html: 'SMS de verificación enviado a %{submitter_name}'
@@ -3360,10 +3364,12 @@ it: &it
link: Link
mcp: MCP
self: Firma te stesso
+ error: Errore
submission_event_names:
send_email_to_html: 'Email inviata a %{submitter_name}'
bounce_email_html: 'Email respinta %{submitter_name}'
complaint_email_html: 'Segnalazione spam %{submitter_name}'
+ fail_sms_to_html: 'SMS non consegnato a %{submitter_name}'
send_reminder_email_to_html: 'E-mail di promemoria inviata a %{submitter_name}'
send_sms_to_html: 'SMS inviato a %{submitter_name}'
send_2fa_sms_to_html: 'SMS di verifica inviato a %{submitter_name}'
@@ -4507,10 +4513,12 @@ fr: &fr
link: Lien
mcp: MCP
self: Signer vous-même
+ error: Erreur
submission_event_names:
send_email_to_html: "E‑mail envoyé à %{submitter_name}"
bounce_email_html: "E‑mail rejeté %{submitter_name}"
complaint_email_html: "Plainte spam %{submitter_name}"
+ fail_sms_to_html: "SMS non distribué à %{submitter_name}"
send_reminder_email_to_html: "E‑mail de rappel envoyé à %{submitter_name}"
send_sms_to_html: "SMS envoyé à %{submitter_name}"
send_2fa_sms_to_html: "SMS de vérification envoyé à %{submitter_name}"
@@ -5670,10 +5678,12 @@ pt: &pt
link: Link
mcp: MCP
self: Assine você mesmo
+ error: Erro
submission_event_names:
send_email_to_html: 'Email enviado para %{submitter_name}'
bounce_email_html: 'Email não entregue %{submitter_name}'
complaint_email_html: 'Reclamação de spam %{submitter_name}'
+ fail_sms_to_html: 'SMS não entregue para %{submitter_name}'
send_reminder_email_to_html: 'Email de lembrete enviado para %{submitter_name}'
send_sms_to_html: 'SMS enviado para %{submitter_name}'
send_2fa_sms_to_html: 'SMS de verificação enviado para %{submitter_name}'
@@ -6833,10 +6843,12 @@ de: &de
link: Link
mcp: MCP
self: Selbst unterschreiben
+ error: Fehler
submission_event_names:
send_email_to_html: 'E-Mail gesendet an %{submitter_name}'
bounce_email_html: 'E-Mail unzustellbar %{submitter_name}'
complaint_email_html: 'Spam-Beschwerde %{submitter_name}'
+ fail_sms_to_html: 'SMS unzustellbar an %{submitter_name}'
send_reminder_email_to_html: 'Erinnerungs-E-Mail gesendet an %{submitter_name}'
send_sms_to_html: 'SMS gesendet an %{submitter_name}'
send_2fa_sms_to_html: 'Verifizierungs-SMS gesendet an %{submitter_name}'
@@ -8520,10 +8532,12 @@ nl: &nl
link: Link
mcp: MCP
self: Zelf ondertekenen
+ error: Fout
submission_event_names:
send_email_to_html: "E-mail verzonden naar %{submitter_name}"
bounce_email_html: "E-mail geretourneerd %{submitter_name}"
complaint_email_html: "Spamklacht %{submitter_name}"
+ fail_sms_to_html: "SMS niet afgeleverd naar %{submitter_name}"
send_reminder_email_to_html: "Herinneringsmail verzonden naar %{submitter_name}"
send_sms_to_html: "SMS verzonden naar %{submitter_name}"
send_2fa_sms_to_html: "Verificatie-SMS verzonden naar %{submitter_name}"
diff --git a/lib/submissions/generate_audit_trail.rb b/lib/submissions/generate_audit_trail.rb
index 9b01bdd55..0fe383044 100644
--- a/lib/submissions/generate_audit_trail.rb
+++ b/lib/submissions/generate_audit_trail.rb
@@ -469,7 +469,7 @@ module Submissions
end
events_data = submission.submission_events.sort_by(&:event_timestamp).filter_map do |event|
- next if event.event_type.in?(%w[bounce_email complaint_email])
+ next if event.event_type.in?(%w[bounce_email complaint_email fail_sms])
submitter = submission.submitters.find { |e| e.id == event.submitter_id }
versions = submitter_versions_index[submitter.id] || []
diff --git a/lib/submitters/serialize_for_api.rb b/lib/submitters/serialize_for_api.rb
index db76b3c82..f24ff4fb5 100644
--- a/lib/submitters/serialize_for_api.rb
+++ b/lib/submitters/serialize_for_api.rb
@@ -8,6 +8,13 @@ module Submitters
methods: %i[status application_key]
}.freeze
+ EVENT_DATA_KEYS = {
+ 'decline_form' => %w[reason],
+ 'complete_verification' => %w[firstname lastname method country idcode],
+ 'fail_kba' => %w[issues],
+ 'fail_sms' => %w[status error_code]
+ }.freeze
+
module_function
def call(submitter, with_template: false, with_events: false, with_documents: true, with_urls: false,
@@ -55,7 +62,7 @@ module Submitters
def serialize_events(events)
events.map do |event|
event.as_json(only: %i[id submitter_id event_type event_timestamp])
- .merge('data' => event.data.slice('reason', 'firstname', 'lastname', 'method', 'country', 'idcode'))
+ .merge('data' => event.data.slice(*EVENT_DATA_KEYS[event.event_type]))
end
end
end