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