diff --git a/lib/tasks/check_force_delete.rake b/lib/tasks/check_force_delete.rake index 7bb66b743..dcaf2c72c 100644 --- a/lib/tasks/check_force_delete.rake +++ b/lib/tasks/check_force_delete.rake @@ -1,12 +1,11 @@ desc 'Check Force Delete' task check_force_delete: :environment do - validations = ValidationEvent.select(:validation_eventable_id) - .failed.where(validation_eventable_type: 'Contact') - .group(:validation_eventable_id) + validations = ValidationEvent.failed.where(validation_eventable_type: 'Contact').uniq(&:validation_eventable_id) - invalid_contact_ids = ( - validations.mx.having("count(event_data ->> 'success') > 2") + validations.regex - ).pluck(:validation_eventable_id) + invalid_contact_ids = validations.select do |validation| + contact = validation.validation_eventable + contact.need_to_start_force_delete? || contact.need_to_lift_force_delete? + end.pluck(:validation_eventable_id) - CheckForceDeleteJob.perform_later(invalid_contact_ids) + CheckForceDeleteJob.perform_later(invalid_contact_ids) if invalid_contact_ids.present? end diff --git a/test/tasks/check_force_delete_test.rb b/test/tasks/check_force_delete_test.rb index dbe2f40aa..2e863947c 100644 --- a/test/tasks/check_force_delete_test.rb +++ b/test/tasks/check_force_delete_test.rb @@ -54,6 +54,7 @@ class CheckForceDeleteTaskTest < ActiveSupport::TestCase action.call end + run_task assert_enqueued_jobs 0 end