internetee-registry/app/models/mass_action.rb
2020-12-30 15:52:25 +02:00

42 lines
1,005 B
Ruby

class MassAction
def self.process(action_type, entries)
entries = CSV.read(entries, headers: true)
case action_type
when 'force_delete'
process_force_delete(entries)
else
false
end
rescue StandardError
false
end
def self.process_force_delete(entries)
return false unless force_delete_entries_valid?(entries)
apply_force_deletes(entries)
end
def self.apply_force_deletes(entries)
log = { ok: [], fail: [] }
entries.each do |e|
dn = Domain.find_by(name_puny: e['domain_name'])
log[:fail] << e['domain_name'] and next unless dn
dn.schedule_force_delete(type: :soft, notify_by_email: true, reason: e['delete_reason'])
log[:ok] << dn.name
end
log
end
def self.force_delete_entries_valid?(entries)
entries.each do |e|
reasons = %w[ENTITY_BURIED INVALID_EMAIL INVALID_PHONE]
return false unless e['domain_name'].present? && reasons.include?(e['delete_reason'])
end
true
end
end