From 38cefe725542733992764021d2e84f1f9b337bd8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Karl=20Erik=20=C3=95unapuu?= Date: Mon, 28 Dec 2020 12:41:07 +0200 Subject: [PATCH] Allow explicit reason for force delete mail template --- app/interactions/domains/force_delete/base.rb | 3 +++ app/interactions/domains/force_delete/notify_by_email.rb | 2 +- app/models/concerns/domain/force_delete.rb | 5 ++++- app/models/mass_action.rb | 5 +++-- .../files/mass_actions/valid_mass_force_delete_list.csv | 4 ++-- 5 files changed, 13 insertions(+), 6 deletions(-) diff --git a/app/interactions/domains/force_delete/base.rb b/app/interactions/domains/force_delete/base.rb index 27601c1d2..d4ad2b820 100644 --- a/app/interactions/domains/force_delete/base.rb +++ b/app/interactions/domains/force_delete/base.rb @@ -10,6 +10,9 @@ module Domains boolean :notify_by_email, default: false, description: 'Do we need to send email notification' + string :reason, + default: nil, + description: 'Which mail template to use explicitly' validates :type, inclusion: { in: %i[fast_track soft] } end diff --git a/app/interactions/domains/force_delete/notify_by_email.rb b/app/interactions/domains/force_delete/notify_by_email.rb index b60f54a5e..e512657b0 100644 --- a/app/interactions/domains/force_delete/notify_by_email.rb +++ b/app/interactions/domains/force_delete/notify_by_email.rb @@ -8,7 +8,7 @@ module Domains send_email domain.update(contact_notification_sent_date: Time.zone.today) else - domain.update(template_name: domain.notification_template) + domain.update(template_name: domain.notification_template(explicit: reason)) end end diff --git a/app/models/concerns/domain/force_delete.rb b/app/models/concerns/domain/force_delete.rb index e06da25cc..74950682e 100644 --- a/app/models/concerns/domain/force_delete.rb +++ b/app/models/concerns/domain/force_delete.rb @@ -19,7 +19,10 @@ module Concerns::Domain::ForceDelete # rubocop:disable Metrics/ModuleLength end end - def notification_template + def notification_template(explicit: nil) + reason = explicit&.downcase + return reason if %w[invalid_email invalid_phone].include?(reason) + if contact_emails_verification_failed.present? 'invalid_email' elsif registrant.org? diff --git a/app/models/mass_action.rb b/app/models/mass_action.rb index dbb6873c6..08a0fea2f 100644 --- a/app/models/mass_action.rb +++ b/app/models/mass_action.rb @@ -23,7 +23,8 @@ class MassAction dn = Domain.find_by(name_puny: e['domain_name']) log[:fail] << e['domain_name'] and next unless dn - dn.schedule_force_delete(type: :soft, reason: e['delete_reason']) + dn.schedule_force_delete(type: :soft, notify_by_email: false, reason: e['delete_reason']) + log[:ok] << dn.name end @@ -32,7 +33,7 @@ class MassAction def self.force_delete_entries_valid?(entries) entries.each do |e| - reasons = %w[ENTITY_BURIED EMAIL PHONE] + reasons = %w[ENTITY_BURIED INVALID_EMAIL INVALID_PHONE] return false unless e['domain_name'].present? && reasons.include?(e['delete_reason']) end diff --git a/test/fixtures/files/mass_actions/valid_mass_force_delete_list.csv b/test/fixtures/files/mass_actions/valid_mass_force_delete_list.csv index 3d8af84bd..ba88abeb4 100644 --- a/test/fixtures/files/mass_actions/valid_mass_force_delete_list.csv +++ b/test/fixtures/files/mass_actions/valid_mass_force_delete_list.csv @@ -1,5 +1,5 @@ domain_name,delete_reason shop.test,ENTITY_BURIED -airport.test,PHONE -library.test,EMAIL +airport.test,INVALID_PHONE +library.test,INVALID_EMAIL nonexistant.test,ENTITY_BURIED