diff --git a/app/models/concerns/contact/archivable.rb b/app/models/concerns/contact/archivable.rb index 0ee266fa6..4526e04c5 100644 --- a/app/models/concerns/contact/archivable.rb +++ b/app/models/concerns/contact/archivable.rb @@ -17,12 +17,13 @@ module Concerns inactive end - def archive(verified: false, notify: true) + def archive(verified: false, notify: true, extra_log: false) unless verified raise 'Contact cannot be archived' unless archivable?(post: true) end notify_registrar_about_archivation if notify + write_to_registrar_log if extra_log destroy! end @@ -51,6 +52,17 @@ module Concerns @log ||= Logger.new(STDOUT) @log.info(msg) end + + def write_to_registrar_log + registrar_name = registrar.accounting_customer_code + archive_path = ENV['contact_archivation_log_file_dir'] + registrar_log_path = "#{archive_path}/#{registrar_name}.txt" + FileUtils.mkdir_p(archive_path) unless Dir.exist?(archive_path) + + f = File.new(registrar_log_path, 'a+') + f.write("#{code}\n") + f.close + end end end end diff --git a/config/application.yml.sample b/config/application.yml.sample index 1b6c40951..72b55e2ea 100644 --- a/config/application.yml.sample +++ b/config/application.yml.sample @@ -154,6 +154,7 @@ lhv_ca_file: # Needed only in dev mode lhv_dev_mode: 'false' epp_session_timeout_seconds: '300' +contact_archivation_log_file_dir: # Since the keys for staging are absent from the repo, we need to supply them separate for testing. test: diff --git a/lib/tasks/contacts/archive.rake b/lib/tasks/contacts/archive.rake index fc1767bb0..9e9568f56 100644 --- a/lib/tasks/contacts/archive.rake +++ b/lib/tasks/contacts/archive.rake @@ -1,9 +1,9 @@ namespace :contacts do desc 'Archives inactive contacts' - task :archive, [:track_id] => [:environment] do |_t, args| + task :archive, %i[track_id initial_run] => [:environment] do |_t, args| unlinked_contacts = contacts_start_point(args[:track_id]) - + initial_run = args[:initial_run] == true || args[:initial_run] == 'true' counter = 0 log("Found #{unlinked_contacts.count} unlinked contacts. Starting to archive.") @@ -11,7 +11,7 @@ namespace :contacts do next unless contact.archivable? log("Archiving contact: id(#{contact.id}), code(#{contact.code})") - contact.archive(verified: true) + contact.archive(verified: true, notify: !initial_run, extra_log: initial_run) counter += 1 end