From 761ce9bd6d9248df8e7750b3e29d2569cea5b749 Mon Sep 17 00:00:00 2001 From: olegphenomenon Date: Fri, 17 Dec 2021 16:00:08 +0200 Subject: [PATCH] added possebility to recheck invalid contacts and also remove old records --- app/interactions/actions/contact_update.rb | 10 +++++++++ app/interactions/actions/email_check.rb | 24 ++++++++++++++++++++++ lib/tasks/verify_email.rake | 20 +++++++++--------- 3 files changed, 44 insertions(+), 10 deletions(-) diff --git a/app/interactions/actions/contact_update.rb b/app/interactions/actions/contact_update.rb index 3f8cfe61e..a18afed56 100644 --- a/app/interactions/actions/contact_update.rb +++ b/app/interactions/actions/contact_update.rb @@ -16,6 +16,7 @@ module Actions maybe_update_ident if ident.present? maybe_attach_legal_doc maybe_change_email + maybe_filtering_old_failed_records commit end @@ -35,6 +36,15 @@ module Actions true end + def maybe_filtering_old_failed_records + if contact.validation_events.count > 1 + contact.validation_events.order!(created_at: :asc) + while contact.validation_events.count >= 1 + contact.validation_events.first.destroy + end + end + end + def maybe_remove_address return if Contact.address_processing? diff --git a/app/interactions/actions/email_check.rb b/app/interactions/actions/email_check.rb index 8f0c940ce..7c1796c93 100644 --- a/app/interactions/actions/email_check.rb +++ b/app/interactions/actions/email_check.rb @@ -11,6 +11,7 @@ module Actions def call result = check_email(email) save_result(result) + filtering_old_failed_records(result) result.success ? log_success : log_failure(result) result.success end @@ -25,6 +26,29 @@ module Actions Rails.env.test? && check_level == 'smtp' ? :mx : check_level.to_sym end + def filtering_old_failed_records(result) + if @check_level == "mx" && !result.success && validation_eventable.validation_events.count > 3 + validation_eventable.validation_events.order!(created_at: :asc) + while validation_eventable.validation_events.count > 3 + validation_eventable.validation_events.first.destroy + end + end + + if @check_level == "mx" && result.success && validation_eventable.validation_events.count > 1 + validation_eventable.validation_events.order!(created_at: :asc) + while validation_eventable.validation_events.count > 1 + validation_eventable.validation_events.first.destroy + end + end + + if @check_level == "smtp" && validation_eventable.validation_events.count > 1 + validation_eventable.validation_events.order!(created_at: :asc) + while validation_eventable.validation_events.count > 1 + validation_eventable.validation_events.first.destroy + end + end + end + def save_result(result) validation_eventable.validation_events.create(validation_event_attrs(result)) rescue ActiveRecord::RecordNotSaved diff --git a/lib/tasks/verify_email.rake b/lib/tasks/verify_email.rake index 9712ec77e..c22587ab1 100644 --- a/lib/tasks/verify_email.rake +++ b/lib/tasks/verify_email.rake @@ -71,9 +71,9 @@ def filter_check_level(contact) if data.failed? return false if data.event_data['check_level'] == 'regex' - return false if data.event_data['check_level'] == 'smtp' - - return false if check_mx_contact_validation(contact) + # return false if data.event_data['check_level'] == 'smtp' + # + # return false if check_mx_contact_validation(contact) return true end @@ -92,13 +92,13 @@ def failed_contacts failed_contacts.uniq end -def check_mx_contact_validation(contact) - data = contact.validation_events.mx.order(created_at: :asc).last(ValidationEvent::MX_CHECK) - - return false if data.size < ValidationEvent::MX_CHECK - - data.all? { |d| d.failed? } -end +# def check_mx_contact_validation(contact) +# data = contact.validation_events.mx.order(created_at: :asc).last(ValidationEvent::MX_CHECK) +# +# return false if data.size < ValidationEvent::MX_CHECK +# +# data.all? { |d| d.failed? } +# end def contacts_by_domain(domain_name) domain = ::Domain.find_by(name: domain_name)