From 89097bfabe947f174fcc124474e79c1f5f8460f2 Mon Sep 17 00:00:00 2001 From: oleghasjanov Date: Fri, 3 Jan 2025 11:59:10 +0200 Subject: [PATCH 01/24] feat: restore company validation for Estonian organizations - Re-enable company validation logic for Estonian organization contacts - Update company_register gem to use master branch - Restore and update company validation tests - Add additional check for Estonian country code in validation This change ensures that only registered or liquidated Estonian companies can be used when creating organizational contacts. --- Gemfile | 4 +- Gemfile.lock | 6 +- app/interactions/actions/contact_create.rb | 17 +++--- .../repp/v1/contacts/create_test.rb | 57 +++++++++---------- 4 files changed, 42 insertions(+), 42 deletions(-) diff --git a/Gemfile b/Gemfile index c4e916929..72665c051 100644 --- a/Gemfile +++ b/Gemfile @@ -68,8 +68,8 @@ gem 'pdfkit' gem 'redis' gem 'sidekiq', '~> 7.0' -gem 'company_register', github: 'internetee/company_register', - branch: 'issues-with-upcoming-data' + +gem 'company_register', github: 'internetee/company_register', branch: :master gem 'domain_name' gem 'e_invoice', github: 'internetee/e_invoice', branch: :master gem 'haml', '~> 6.0' diff --git a/Gemfile.lock b/Gemfile.lock index ace0966c2..16cb1a497 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -1,7 +1,7 @@ GIT remote: https://github.com/internetee/company_register.git - revision: 1e91fec78212d7e549a1c2362c011761a447bbcd - branch: issues-with-upcoming-data + revision: 30b2c4d2f0bb882370e174fc965cd9fd02b42951 + branch: master specs: company_register (0.1.0) activesupport @@ -304,7 +304,7 @@ GEM kaminari-core (= 1.2.1) kaminari-core (1.2.1) libxml-ruby (3.2.1) - logger (1.6.5) + logger (1.6.4) loofah (2.24.0) crass (~> 1.0.2) nokogiri (>= 1.12.0) diff --git a/app/interactions/actions/contact_create.rb b/app/interactions/actions/contact_create.rb index b9d1d6596..dfa2d1299 100644 --- a/app/interactions/actions/contact_create.rb +++ b/app/interactions/actions/contact_create.rb @@ -14,7 +14,7 @@ module Actions maybe_attach_legal_doc maybe_validate_ident maybe_change_email - # maybe_company_is_relevant + maybe_company_is_relevant commit maybe_validate_phone_number maybe_validate_contact @@ -79,16 +79,17 @@ module Actions @error = true end - # def maybe_company_is_relevant - # return true unless contact.org? + def maybe_company_is_relevant + return true unless contact.org? + return true unless contact.ident_country_code == 'EE' - # company_status = contact.return_company_status + company_status = contact.return_company_status - # return if [Contact::REGISTERED, Contact::LIQUIDATED].include? company_status - # contact.add_epp_error('2003', nil, 'ident', I18n.t('errors.messages.company_not_registered')) + return true if [Contact::REGISTERED, Contact::LIQUIDATED].include? company_status + contact.add_epp_error('2003', nil, 'ident', I18n.t('errors.messages.company_not_registered')) - # @error = true - # end + @error = true + end def maybe_attach_legal_doc ::Actions::BaseAction.attach_legal_doc_to_new(contact, legal_document, domain: false) diff --git a/test/integration/repp/v1/contacts/create_test.rb b/test/integration/repp/v1/contacts/create_test.rb index bcb196f1a..505aabfe1 100644 --- a/test/integration/repp/v1/contacts/create_test.rb +++ b/test/integration/repp/v1/contacts/create_test.rb @@ -188,39 +188,38 @@ class ReppV1ContactsCreateTest < ActionDispatch::IntegrationTest ENV['shunter_enabled'] = 'false' end - # def test_returns_error_response_if_company_not_existed - # original_new_method = CompanyRegister::Client.method(:new) - # CompanyRegister::Client.define_singleton_method(:new) do - # object = original_new_method.call - # def object.simple_data(registration_number:) - # [Company.new('1234567', 'ACME Ltd', 'K')] - # end - # object - # end + def test_returns_error_response_if_company_not_existed + original_new_method = CompanyRegister::Client.method(:new) + CompanyRegister::Client.define_singleton_method(:new) do + object = original_new_method.call + def object.simple_data(registration_number:) + [Company.new('1234567', 'ACME Ltd', 'K')] + end + object + end - # request_body = { - # "contact": { - # "name": 'Donald Trump', - # "phone": '+372.51111112', - # "email": 'donald@trumptower.com', - # "ident": { - # "ident_type": 'org', - # "ident_country_code": 'EE', - # "ident": '70000313', - # }, - # }, - # } + request_body = { + "contact": { + "name": 'Donald Trump', + "phone": '+372.51111112', + "email": 'donald@trumptower.com', + "ident": { + "ident_type": 'org', + "ident_country_code": 'EE', + "ident": '70000313', + }, + }, + } - # post '/repp/v1/contacts', headers: @auth_headers, params: request_body - # json = JSON.parse(response.body, symbolize_names: true) + post '/repp/v1/contacts', headers: @auth_headers, params: request_body + json = JSON.parse(response.body, symbolize_names: true) - # assert_response :bad_request - # assert_equal 2003, json[:code] - # puts json[:message] - # assert json[:message].include? 'Company is not registered' + assert_response :bad_request + assert_equal 2003, json[:code] + assert json[:message].include? 'Company is not registered' - # CompanyRegister::Client.define_singleton_method(:new, original_new_method) - # end + CompanyRegister::Client.define_singleton_method(:new, original_new_method) + end def test_contact_created_with_existed_company original_new_method = CompanyRegister::Client.method(:new) From 45c77f70526e612f3316b4a16dc5ec66d58a6183 Mon Sep 17 00:00:00 2001 From: oleghasjanov Date: Wed, 8 Jan 2025 12:29:01 +0200 Subject: [PATCH 02/24] fix: improve company registry data processing - Switch company_register branch to issues-with-upcoming-data - Convert ident to string when querying company data - Add extended logging in CompanyRegisterStatusJob - Disable automatic merging in renovate.json Technical changes: - Update dependencies: date, net-protocol, net-smtp, timeout --- Gemfile | 2 -- Gemfile.lock | 12 ++++++------ app/jobs/company_register_status_job.rb | 3 +++ app/models/contact/company_register.rb | 4 ++-- 4 files changed, 11 insertions(+), 10 deletions(-) diff --git a/Gemfile b/Gemfile index 72665c051..241eeda24 100644 --- a/Gemfile +++ b/Gemfile @@ -67,8 +67,6 @@ gem 'jquery-ui-rails', '6.0.1' gem 'pdfkit' gem 'redis' gem 'sidekiq', '~> 7.0' - - gem 'company_register', github: 'internetee/company_register', branch: :master gem 'domain_name' gem 'e_invoice', github: 'internetee/e_invoice', branch: :master diff --git a/Gemfile.lock b/Gemfile.lock index 16cb1a497..0c9113ec0 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -1,7 +1,7 @@ GIT remote: https://github.com/internetee/company_register.git - revision: 30b2c4d2f0bb882370e174fc965cd9fd02b42951 - branch: master + revision: d74af7ac588ba5b767ec425a37385de3b715145d + branch: issues-with-upcoming-data specs: company_register (0.1.0) activesupport @@ -214,7 +214,7 @@ GEM activerecord (>= 5.a) database_cleaner-core (~> 2.0.0) database_cleaner-core (2.0.1) - date (3.3.4) + date (3.4.1) devise (4.8.0) bcrypt (~> 3.0) orm_adapter (~> 0.1) @@ -347,9 +347,9 @@ GEM net-protocol net-pop (0.1.2) net-protocol - net-protocol (0.1.3) + net-protocol (0.2.2) timeout - net-smtp (0.3.3) + net-smtp (0.5.0) net-protocol netrc (0.11.0) newrelic-infinite_tracing (8.1.0) @@ -520,7 +520,7 @@ GEM tilt (2.0.11) time (0.3.0) date - timeout (0.3.0) + timeout (0.4.3) truemail (3.0.3) simpleidn (~> 0.2.1) tzinfo (2.0.6) diff --git a/app/jobs/company_register_status_job.rb b/app/jobs/company_register_status_job.rb index b40b55b00..f3b9dc01e 100644 --- a/app/jobs/company_register_status_job.rb +++ b/app/jobs/company_register_status_job.rb @@ -75,15 +75,18 @@ class CompanyRegisterStatusJob < ApplicationJob end def delete_process(contact) + Rails.logger.info("Processing company details for contact #{contact.id} with ident: #{contact.ident} (#{contact.ident.class})") company_details_response = contact.return_company_details if company_details_response.empty? + Rails.logger.info("Empty company details response for contact #{contact.id}") schedule_force_delete(contact) return end kandeliik_tekstina = extract_kandeliik_tekstina(company_details_response) + Rails.logger.info("Kandeliik tekstina for contact #{contact.id}: #{kandeliik_tekstina}") if kandeliik_tekstina == PAYMENT_STATEMENT_BUSINESS_REGISTRY_REASON soft_delete_company(contact) diff --git a/app/models/contact/company_register.rb b/app/models/contact/company_register.rb index 4f036dd97..803867ecf 100644 --- a/app/models/contact/company_register.rb +++ b/app/models/contact/company_register.rb @@ -26,8 +26,8 @@ module Contact::CompanyRegister def return_company_details return unless org? - - company_register.company_details(registration_number: ident) + + company_register.company_details(registration_number: ident.to_s) rescue CompanyRegister::NotAvailableError [] end From 2ec545b3aa035bf95199816922582440f6bc928c Mon Sep 17 00:00:00 2001 From: oleghasjanov Date: Wed, 8 Jan 2025 14:50:47 +0200 Subject: [PATCH 03/24] feat: add status notes to force delete notifications - Add notes parameter to force delete interactions to provide more context - Include company registry status in force delete notifications - Add status mapping constants for better readability - Move status note assignment before save in force delete process Technical details: - Add notes field to Domains::ForceDelete::Base interaction - Update force delete notifications to include status notes - Add REGISTRY_STATUSES mapping in CompanyRegisterStatusJob - Update tests to verify new notification format --- app/interactions/domains/force_delete/base.rb | 3 +++ .../domains/force_delete/notify_registrar.rb | 6 ++++-- app/interactions/domains/force_delete/set_status.rb | 3 +-- app/jobs/company_register_status_job.rb | 10 +++++++++- app/models/concerns/domain/force_delete.rb | 4 ++-- config/locales/en.yml | 2 +- test/jobs/company_register_status_job_test.rb | 3 ++- 7 files changed, 22 insertions(+), 9 deletions(-) diff --git a/app/interactions/domains/force_delete/base.rb b/app/interactions/domains/force_delete/base.rb index 712d0c08e..31093c839 100644 --- a/app/interactions/domains/force_delete/base.rb +++ b/app/interactions/domains/force_delete/base.rb @@ -16,6 +16,9 @@ module Domains string :email, default: nil, description: 'Possible invalid email to notify on' + string :notes, + default: nil, + description: 'Notes to add reason to the force delete' validates :type, inclusion: { in: %i[fast_track soft] } end diff --git a/app/interactions/domains/force_delete/notify_registrar.rb b/app/interactions/domains/force_delete/notify_registrar.rb index 279fac584..2e209a4c3 100644 --- a/app/interactions/domains/force_delete/notify_registrar.rb +++ b/app/interactions/domains/force_delete/notify_registrar.rb @@ -11,7 +11,8 @@ module Domains ident: domain.registrant.ident, domain_name: domain.name, outzone_date: domain.outzone_date, - purge_date: domain.purge_date) + purge_date: domain.purge_date, + notes: notes) else I18n.t('force_delete_set_on_domain', domain_name: domain.name, @@ -30,7 +31,8 @@ module Domains ident: domain.registrant.ident, domain_name: domain.name, outzone_date: domain.outzone_date, - purge_date: domain.purge_date) + purge_date: domain.purge_date, + notes: notes) else I18n.t('force_delete_auto_email', domain_name: domain.name, diff --git a/app/interactions/domains/force_delete/set_status.rb b/app/interactions/domains/force_delete/set_status.rb index 770903d5a..cefaf820b 100644 --- a/app/interactions/domains/force_delete/set_status.rb +++ b/app/interactions/domains/force_delete/set_status.rb @@ -4,6 +4,7 @@ module Domains def execute domain.force_delete_type = type type == :fast_track ? force_delete_fast_track : force_delete_soft + domain.status_notes[DomainStatus::FORCE_DELETE] = "Company no: #{domain.registrant.ident}" if reason == 'invalid_company' domain.save(validate: false) end @@ -12,8 +13,6 @@ module Domains expire_warning_period_days + redemption_grace_period_days domain.force_delete_start = Time.zone.today + 1.day - - domain.status_notes[DomainStatus::FORCE_DELETE] = "Company no: #{domain.registrant.ident}" if reason == 'invalid_company' end def force_delete_soft diff --git a/app/jobs/company_register_status_job.rb b/app/jobs/company_register_status_job.rb index f3b9dc01e..8f1120f4f 100644 --- a/app/jobs/company_register_status_job.rb +++ b/app/jobs/company_register_status_job.rb @@ -3,6 +3,13 @@ require 'zip' class CompanyRegisterStatusJob < ApplicationJob PAYMENT_STATEMENT_BUSINESS_REGISTRY_REASON = 'Kustutamiskanne dokumentide hoidjata' + REGISTRY_STATUSES = { + Contact::REGISTERED => 'registered', + Contact::LIQUIDATED => 'liquidated', + Contact::BANKRUPT => 'bankrupt', + Contact::DELETED => 'deleted' + } + queue_as :default def perform(days_interval = 14, spam_time_delay = 1, batch_size = 100) @@ -58,7 +65,8 @@ class CompanyRegisterStatusJob < ApplicationJob type: :fast_track, notify_by_email: true, reason: 'invalid_company', - email: contact.email + email: contact.email, + notes: "Contact has status #{REGISTRY_STATUSES[contact.company_register_status]}" ) end end diff --git a/app/models/concerns/domain/force_delete.rb b/app/models/concerns/domain/force_delete.rb index e0f98ea84..6a7949fef 100644 --- a/app/models/concerns/domain/force_delete.rb +++ b/app/models/concerns/domain/force_delete.rb @@ -47,9 +47,9 @@ module Domain::ForceDelete statuses.include?(DomainStatus::FORCE_DELETE) end - def schedule_force_delete(type: :fast_track, notify_by_email: false, reason: nil, email: nil) + def schedule_force_delete(type: :fast_track, notify_by_email: false, reason: nil, email: nil, notes: nil) Domains::ForceDelete::SetForceDelete.run(domain: self, type: type, reason: reason, - notify_by_email: notify_by_email, email: email) + notify_by_email: notify_by_email, email: email, notes: notes) end def cancel_force_delete diff --git a/config/locales/en.yml b/config/locales/en.yml index 2f9ba4b15..15c0f4419 100644 --- a/config/locales/en.yml +++ b/config/locales/en.yml @@ -675,7 +675,7 @@ en: actions: Actions contact_has_been_archived: 'Contact with code %{contact_code} has been archieved because it has been orphaned for longer than %{orphan_months} months.' dns_policy_violation: "Data management policy violation: DNSKEY does not match or not found in the authoritative nameservers" - invalid_ident: 'Force delete set on domain %{domain_name}. Outzone date: %{outzone_date}. Purge date: %{purge_date}. Invalid ident %{ident}' + invalid_ident: 'Force delete set on domain %{domain_name}. Outzone date: %{outzone_date}. Purge date: %{purge_date}. Invalid ident %{ident}. %{notes}' number: currency: diff --git a/test/jobs/company_register_status_job_test.rb b/test/jobs/company_register_status_job_test.rb index aff3785f9..775acf567 100644 --- a/test/jobs/company_register_status_job_test.rb +++ b/test/jobs/company_register_status_job_test.rb @@ -184,7 +184,8 @@ class CompanyRegisterStatusJobTest < ActiveSupport::TestCase ident: @registrant_acme.ident, domain_name: @registrant_acme.registrant_domains.first.name, outzone_date: @registrant_acme.registrant_domains.first.outzone_date, - purge_date: @registrant_acme.registrant_domains.first.purge_date) + purge_date: @registrant_acme.registrant_domains.first.purge_date, + notes: "Contact has status deleted") assert_equal @registrant_acme.registrant_domains.first.registrar.notifications.last.text, template CompanyRegister::Client.define_singleton_method(:new, original_new_method) From 8a93a8b4d2aaa71685279b6ddaa30e152b44b5b0 Mon Sep 17 00:00:00 2001 From: oleghasjanov Date: Thu, 9 Jan 2025 10:48:06 +0200 Subject: [PATCH 04/24] feat: enhance soft delete process for invalid companies - Add email notification for soft delete process - Include company status information in force delete notes - Add validation check to prevent duplicate force delete scheduling - Pass additional context (reason, email) to force delete process This improves the soft delete process by providing more detailed information about why the domain is being force deleted and ensures proper notification to the contact. --- app/jobs/company_register_status_job.rb | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/app/jobs/company_register_status_job.rb b/app/jobs/company_register_status_job.rb index 8f1120f4f..dc40d2d8b 100644 --- a/app/jobs/company_register_status_job.rb +++ b/app/jobs/company_register_status_job.rb @@ -111,7 +111,14 @@ class CompanyRegisterStatusJob < ApplicationJob def soft_delete_company(contact) contact.registrant_domains.reject { |domain| domain.force_delete_scheduled? }.each do |domain| - domain.schedule_force_delete(type: :soft) + next if domain.force_delete_scheduled? + + domain.schedule_force_delete( + type: :soft, + notify_by_email: true, + reason: 'invalid_company', + email: contact.email, + notes: "Contact has status #{REGISTRY_STATUSES[contact.company_register_status]}") end puts "Soft delete process initiated for company: #{contact.name} with ID: #{contact.id}" From 92f82194e10fbf5bc146217032b7d769981b4ffc Mon Sep 17 00:00:00 2001 From: oleghasjanov Date: Fri, 10 Jan 2025 13:29:08 +0200 Subject: [PATCH 05/24] change registrant query --- app/jobs/company_register_status_job.rb | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/app/jobs/company_register_status_job.rb b/app/jobs/company_register_status_job.rb index dc40d2d8b..5c070c629 100644 --- a/app/jobs/company_register_status_job.rb +++ b/app/jobs/company_register_status_job.rb @@ -45,12 +45,14 @@ class CompanyRegisterStatusJob < ApplicationJob end def sampling_registrant_contact(days_interval) - Registrant.where(ident_type: 'org', ident_country_code: 'EE').where( - "(company_register_status IS NULL OR checked_company_at IS NULL) OR - (company_register_status = ? AND checked_company_at < ?) OR - company_register_status IN (?)", - Contact::REGISTERED, days_interval.days.ago, [Contact::LIQUIDATED, Contact::BANKRUPT, Contact::DELETED] - ) + Contact.joins(:registrant_domains) + .where(ident_type: 'org', ident_country_code: 'EE') + .where( + "(company_register_status IS NULL OR checked_company_at IS NULL) OR + (company_register_status = ? AND checked_company_at < ?) OR + company_register_status IN (?)", + Contact::REGISTERED, 365.days.ago, [Contact::LIQUIDATED, Contact::BANKRUPT, Contact::DELETED] + ).distinct end def update_validation_company_status(contact:, status:) From 0829f387f2681f6ef30731aa9a92411b1fd2e45b Mon Sep 17 00:00:00 2001 From: oleghasjanov Date: Fri, 10 Jan 2025 13:31:24 +0200 Subject: [PATCH 06/24] added days interval --- app/jobs/company_register_status_job.rb | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/app/jobs/company_register_status_job.rb b/app/jobs/company_register_status_job.rb index 5c070c629..f072c2a4d 100644 --- a/app/jobs/company_register_status_job.rb +++ b/app/jobs/company_register_status_job.rb @@ -51,8 +51,9 @@ class CompanyRegisterStatusJob < ApplicationJob "(company_register_status IS NULL OR checked_company_at IS NULL) OR (company_register_status = ? AND checked_company_at < ?) OR company_register_status IN (?)", - Contact::REGISTERED, 365.days.ago, [Contact::LIQUIDATED, Contact::BANKRUPT, Contact::DELETED] - ).distinct + Contact::REGISTERED, days_interval.days.ago, [Contact::LIQUIDATED, Contact::BANKRUPT, Contact::DELETED] + ) + .distinct end def update_validation_company_status(contact:, status:) From 38fdc354960b774c3763c115e01e4f2a38ee0693 Mon Sep 17 00:00:00 2001 From: oleghasjanov Date: Mon, 13 Jan 2025 10:52:08 +0200 Subject: [PATCH 07/24] Remove extra update --- app/jobs/company_register_status_job.rb | 1 - app/models/contact.rb | 5 +++++ 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/app/jobs/company_register_status_job.rb b/app/jobs/company_register_status_job.rb index f072c2a4d..75c76d7b6 100644 --- a/app/jobs/company_register_status_job.rb +++ b/app/jobs/company_register_status_job.rb @@ -29,7 +29,6 @@ class CompanyRegisterStatusJob < ApplicationJob sleep spam_time_delay company_status = contact.return_company_status - contact.update!(company_register_status: company_status, checked_company_at: Time.zone.now) case company_status when Contact::REGISTERED diff --git a/app/models/contact.rb b/app/models/contact.rb index 51c5ecd2c..0e5d9de06 100644 --- a/app/models/contact.rb +++ b/app/models/contact.rb @@ -87,6 +87,11 @@ class Contact < ApplicationRecord after_save :update_related_whois_records before_validation :clear_address_modifications, if: -> { !self.class.address_processing? } + # TODO: remove after testing + after_save do + Rails.logger.info "Contact saved or updated: #{id}" + end + self.ignored_columns = %w[legacy_id legacy_history_id] ORG = 'org'.freeze From 9d036f9af3c6f76287e09819dca29ac9693af24a Mon Sep 17 00:00:00 2001 From: oleghasjanov Date: Mon, 13 Jan 2025 11:14:04 +0200 Subject: [PATCH 08/24] added virtual attribute for skip whois update --- app/interactions/domains/force_delete/post_set_process.rb | 1 + app/interactions/domains/force_delete/prepare_domain.rb | 1 + app/interactions/domains/force_delete/set_status.rb | 1 + app/models/domain.rb | 4 ++++ 4 files changed, 7 insertions(+) diff --git a/app/interactions/domains/force_delete/post_set_process.rb b/app/interactions/domains/force_delete/post_set_process.rb index 0c7ae061c..61df9ef46 100644 --- a/app/interactions/domains/force_delete/post_set_process.rb +++ b/app/interactions/domains/force_delete/post_set_process.rb @@ -11,6 +11,7 @@ module Domains # Allow deletion statuses.delete(DomainStatus::CLIENT_DELETE_PROHIBITED) + domain.skip_whois_record_update = false domain.save(validate: false) end diff --git a/app/interactions/domains/force_delete/prepare_domain.rb b/app/interactions/domains/force_delete/prepare_domain.rb index 116957a87..be05ce480 100644 --- a/app/interactions/domains/force_delete/prepare_domain.rb +++ b/app/interactions/domains/force_delete/prepare_domain.rb @@ -8,6 +8,7 @@ module Domains def execute domain.force_delete_domain_statuses_history = domain.statuses domain.statuses |= STATUSES_TO_SET + domain.skip_whois_record_update = true domain.save(validate: false) end end diff --git a/app/interactions/domains/force_delete/set_status.rb b/app/interactions/domains/force_delete/set_status.rb index cefaf820b..cedef18d5 100644 --- a/app/interactions/domains/force_delete/set_status.rb +++ b/app/interactions/domains/force_delete/set_status.rb @@ -5,6 +5,7 @@ module Domains domain.force_delete_type = type type == :fast_track ? force_delete_fast_track : force_delete_soft domain.status_notes[DomainStatus::FORCE_DELETE] = "Company no: #{domain.registrant.ident}" if reason == 'invalid_company' + domain.skip_whois_record_update = true domain.save(validate: false) end diff --git a/app/models/domain.rb b/app/models/domain.rb index 1d1a13083..88d3af6a0 100644 --- a/app/models/domain.rb +++ b/app/models/domain.rb @@ -89,6 +89,8 @@ class Domain < ApplicationRecord has_many :registrant_verifications, dependent: :destroy has_one :csync_record, dependent: :destroy + attribute :skip_whois_record_update, :boolean, default: false + after_initialize do self.pending_json = {} if pending_json.blank? self.statuses = [] if statuses.nil? @@ -719,6 +721,8 @@ class Domain < ApplicationRecord end def update_whois_record + return if skip_whois_record_update + UpdateWhoisRecordJob.set(wait: 1.minute).perform_later name, 'domain' end From bbdf44583c6503f9f3767ddd75f335338de03a01 Mon Sep 17 00:00:00 2001 From: oleghasjanov Date: Mon, 13 Jan 2025 11:29:04 +0200 Subject: [PATCH 09/24] updated WhoisUpdateJob condition for running --- app/interactions/domains/force_delete/notify_by_email.rb | 1 + app/interactions/domains/force_delete/post_set_process.rb | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/app/interactions/domains/force_delete/notify_by_email.rb b/app/interactions/domains/force_delete/notify_by_email.rb index e512657b0..0e704ee99 100644 --- a/app/interactions/domains/force_delete/notify_by_email.rb +++ b/app/interactions/domains/force_delete/notify_by_email.rb @@ -4,6 +4,7 @@ module Domains def execute return unless notify_by_email + domain.skip_whois_record_update = false if type == :fast_track send_email domain.update(contact_notification_sent_date: Time.zone.today) diff --git a/app/interactions/domains/force_delete/post_set_process.rb b/app/interactions/domains/force_delete/post_set_process.rb index 61df9ef46..036fd3531 100644 --- a/app/interactions/domains/force_delete/post_set_process.rb +++ b/app/interactions/domains/force_delete/post_set_process.rb @@ -11,7 +11,7 @@ module Domains # Allow deletion statuses.delete(DomainStatus::CLIENT_DELETE_PROHIBITED) - domain.skip_whois_record_update = false + domain.skip_whois_record_update = notify_by_email ? true : false domain.save(validate: false) end From 19df0cd57fccc36002205c0c2b526add97f51fdd Mon Sep 17 00:00:00 2001 From: oleghasjanov Date: Mon, 13 Jan 2025 11:50:42 +0200 Subject: [PATCH 10/24] fix tests -> count of running jobs were decreased --- app/jobs/company_register_status_job.rb | 3 +-- test/models/domain/force_delete_test.rb | 2 +- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/app/jobs/company_register_status_job.rb b/app/jobs/company_register_status_job.rb index 75c76d7b6..f2bf2eec3 100644 --- a/app/jobs/company_register_status_job.rb +++ b/app/jobs/company_register_status_job.rb @@ -75,8 +75,7 @@ class CompanyRegisterStatusJob < ApplicationJob def check_for_force_delete(contact) contact.registrant_domains.any? do |domain| - notes = domain.status_notes[DomainStatus::FORCE_DELETE] - notes && notes.include?("Company no: #{contact.ident}") + domain.force_delete_scheduled? && notes.include?("Company no: #{contact.ident}") end end diff --git a/test/models/domain/force_delete_test.rb b/test/models/domain/force_delete_test.rb index c889056a2..afdd92a9d 100644 --- a/test/models/domain/force_delete_test.rb +++ b/test/models/domain/force_delete_test.rb @@ -532,7 +532,7 @@ class ForceDeleteTest < ActionMailer::TestCase assert_equal Date.parse('2010-09-19'), @domain.force_delete_date.to_date assert_equal Date.parse('2010-08-05'), @domain.force_delete_start.to_date - assert_enqueued_jobs 8 + assert_enqueued_jobs 6 end def prepare_bounced_email_address(email) From d126944ad776094ce677642080b000fb80d97b48 Mon Sep 17 00:00:00 2001 From: oleghasjanov Date: Mon, 13 Jan 2025 12:00:14 +0200 Subject: [PATCH 11/24] reverse --- app/jobs/company_register_status_job.rb | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/app/jobs/company_register_status_job.rb b/app/jobs/company_register_status_job.rb index f2bf2eec3..75c76d7b6 100644 --- a/app/jobs/company_register_status_job.rb +++ b/app/jobs/company_register_status_job.rb @@ -75,7 +75,8 @@ class CompanyRegisterStatusJob < ApplicationJob def check_for_force_delete(contact) contact.registrant_domains.any? do |domain| - domain.force_delete_scheduled? && notes.include?("Company no: #{contact.ident}") + notes = domain.status_notes[DomainStatus::FORCE_DELETE] + notes && notes.include?("Company no: #{contact.ident}") end end From dcf9447f97b5e522533be9c99ac757eeb4b8e8f6 Mon Sep 17 00:00:00 2001 From: oleghasjanov Date: Mon, 13 Jan 2025 12:02:32 +0200 Subject: [PATCH 12/24] added update whois job skipping for lifting FG --- .../domains/cancel_force_delete/clear_force_delete_data.rb | 1 + .../domains/cancel_force_delete/remove_force_delete_statuses.rb | 1 + .../cancel_force_delete/restore_statuses_before_force_delete.rb | 1 + 3 files changed, 3 insertions(+) diff --git a/app/interactions/domains/cancel_force_delete/clear_force_delete_data.rb b/app/interactions/domains/cancel_force_delete/clear_force_delete_data.rb index 1e6bcccd9..cfd522589 100644 --- a/app/interactions/domains/cancel_force_delete/clear_force_delete_data.rb +++ b/app/interactions/domains/cancel_force_delete/clear_force_delete_data.rb @@ -6,6 +6,7 @@ module Domains domain.force_delete_date = nil domain.force_delete_start = nil domain.status_notes[DomainStatus::FORCE_DELETE] = nil + domain.skip_whois_record_update = false domain.save(validate: false) end end diff --git a/app/interactions/domains/cancel_force_delete/remove_force_delete_statuses.rb b/app/interactions/domains/cancel_force_delete/remove_force_delete_statuses.rb index bc4122f80..77c8eba5e 100644 --- a/app/interactions/domains/cancel_force_delete/remove_force_delete_statuses.rb +++ b/app/interactions/domains/cancel_force_delete/remove_force_delete_statuses.rb @@ -14,6 +14,7 @@ module Domains domain.admin_store_statuses_history -= domain_statuses unless domain.admin_store_statuses_history.nil? rejected_statuses = domain.statuses.reject { |a| domain_statuses.include? a } domain.statuses = rejected_statuses + domain.skip_whois_record_update = true domain.save(validate: false) end end diff --git a/app/interactions/domains/cancel_force_delete/restore_statuses_before_force_delete.rb b/app/interactions/domains/cancel_force_delete/restore_statuses_before_force_delete.rb index f913d68b9..6d3a91063 100644 --- a/app/interactions/domains/cancel_force_delete/restore_statuses_before_force_delete.rb +++ b/app/interactions/domains/cancel_force_delete/restore_statuses_before_force_delete.rb @@ -8,6 +8,7 @@ module Domains domain.force_delete_domain_statuses_history = nil domain.admin_store_statuses_history = nil + domain.skip_whois_record_update = true domain.save(validate: false) end end From 23c010f0340f61746d2efe54bc33c02244c66382 Mon Sep 17 00:00:00 2001 From: oleghasjanov Date: Mon, 13 Jan 2025 15:38:28 +0200 Subject: [PATCH 13/24] added new pattern for FD lifted --- app/jobs/company_register_status_job.rb | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/app/jobs/company_register_status_job.rb b/app/jobs/company_register_status_job.rb index 75c76d7b6..4deed0346 100644 --- a/app/jobs/company_register_status_job.rb +++ b/app/jobs/company_register_status_job.rb @@ -76,7 +76,13 @@ class CompanyRegisterStatusJob < ApplicationJob def check_for_force_delete(contact) contact.registrant_domains.any? do |domain| notes = domain.status_notes[DomainStatus::FORCE_DELETE] - notes && notes.include?("Company no: #{contact.ident}") + notes_check = notes && notes.include?("Company no: #{contact.ident}") + + if !notes_check && domain.force_delete_data.present? + domain.force_delete_data['template_name'] == 'invalid_company' + else + notes_check + end end end From 96fae4a8d420b966266a00fd1bf42aa525a6df3f Mon Sep 17 00:00:00 2001 From: oleghasjanov Date: Tue, 14 Jan 2025 10:27:05 +0200 Subject: [PATCH 14/24] fix: adjust template_name access for hstore field Use direct accessor method for template_name instead of hash access since force_delete_data is stored as hstore --- app/jobs/company_register_status_job.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/jobs/company_register_status_job.rb b/app/jobs/company_register_status_job.rb index 4deed0346..b55bca5f0 100644 --- a/app/jobs/company_register_status_job.rb +++ b/app/jobs/company_register_status_job.rb @@ -79,7 +79,7 @@ class CompanyRegisterStatusJob < ApplicationJob notes_check = notes && notes.include?("Company no: #{contact.ident}") if !notes_check && domain.force_delete_data.present? - domain.force_delete_data['template_name'] == 'invalid_company' + domain.template_name == 'invalid_company' else notes_check end From 88f884ca4781b60d3b6c6496264f2b895bb781b1 Mon Sep 17 00:00:00 2001 From: oleghasjanov Date: Tue, 14 Jan 2025 10:54:48 +0200 Subject: [PATCH 15/24] fix: skip non-scheduled domains in lift_force_delete Only attempt to cancel force delete for domains that actually have it scheduled. This prevents unnecessary method calls and potential errors. --- app/jobs/company_register_status_job.rb | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/app/jobs/company_register_status_job.rb b/app/jobs/company_register_status_job.rb index b55bca5f0..90490dda9 100644 --- a/app/jobs/company_register_status_job.rb +++ b/app/jobs/company_register_status_job.rb @@ -87,7 +87,11 @@ class CompanyRegisterStatusJob < ApplicationJob end def lift_force_delete(contact) - contact.registrant_domains.each(&:cancel_force_delete) + contact.registrant_domains.each do |domain| + next unless domain.force_delete_scheduled? + + domain.cancel_force_delete + end end def delete_process(contact) From 19611fe429cbbaad4100061248769f3133dd555c Mon Sep 17 00:00:00 2001 From: oleghasjanov Date: Tue, 14 Jan 2025 12:28:36 +0200 Subject: [PATCH 16/24] updated logs sidekiq handling --- config/initializers/sidekiq.rb | 34 ++++++++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) diff --git a/config/initializers/sidekiq.rb b/config/initializers/sidekiq.rb index 1ddfb9c5e..b2d067a2f 100644 --- a/config/initializers/sidekiq.rb +++ b/config/initializers/sidekiq.rb @@ -1 +1,35 @@ require 'sidekiq/web' # Require at the top of the initializer + +Sidekiq.configure_server do |config| + config.logger.level = Logger::INFO + + # Custom job logging format + Sidekiq.logger.formatter = proc do |severity, datetime, progname, msg| + thread_id = Thread.current.object_id.to_s(36) + process_id = Process.pid + + # Skip messages containing "start" or "Performed" + next nil if msg.to_s == 'start' || msg.to_s.include?('Performed') + + # Skip "fail" message as we'll get detailed error after + next nil if msg.to_s == 'fail' + + # Store job info when job starts + if msg.to_s.start_with?('Performing') + Thread.current[:current_job_info] = msg.to_s + end + + # Add job info to done message + if msg.to_s == 'done' && Thread.current[:current_job_info] + job_info = Thread.current[:current_job_info].sub('Performing', 'Completed') + msg = job_info + end + + "#{datetime.utc.iso8601(3)} pid=#{process_id} tid=#{thread_id} #{severity}: #{msg}\n" + end +end + +# Client configuration (if needed) +Sidekiq.configure_client do |config| + config.logger.level = Logger::INFO +end From 78be26c0d48512053d953237bdeac76da47cffff Mon Sep 17 00:00:00 2001 From: oleghasjanov Date: Tue, 14 Jan 2025 13:10:07 +0200 Subject: [PATCH 17/24] send liquidated email only once --- app/jobs/company_register_status_job.rb | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/app/jobs/company_register_status_job.rb b/app/jobs/company_register_status_job.rb index 90490dda9..08da3f769 100644 --- a/app/jobs/company_register_status_job.rb +++ b/app/jobs/company_register_status_job.rb @@ -34,7 +34,9 @@ class CompanyRegisterStatusJob < ApplicationJob when Contact::REGISTERED lift_force_delete(contact) if check_for_force_delete(contact) when Contact::LIQUIDATED - ContactInformMailer.company_liquidation(contact: contact).deliver_now + unless contact.company_register_status == Contact::LIQUIDATED + ContactInformMailer.company_liquidation(contact: contact).deliver_now + end else delete_process(contact) end From 7392ce2d76db6233b6ac120d12788a1172bb6d5b Mon Sep 17 00:00:00 2001 From: oleghasjanov Date: Mon, 27 Jan 2025 15:03:21 +0200 Subject: [PATCH 18/24] refactor: Extract company status handling logic - Move company status handling logic into a separate method `handle_company_statuses` - Improve code readability by splitting proceed_company_status method - Keep status update logic after handling company statuses --- app/jobs/company_register_status_job.rb | 2 ++ test/jobs/company_register_status_job_test.rb | 2 +- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/app/jobs/company_register_status_job.rb b/app/jobs/company_register_status_job.rb index 08da3f769..27e88e8cd 100644 --- a/app/jobs/company_register_status_job.rb +++ b/app/jobs/company_register_status_job.rb @@ -37,6 +37,8 @@ class CompanyRegisterStatusJob < ApplicationJob unless contact.company_register_status == Contact::LIQUIDATED ContactInformMailer.company_liquidation(contact: contact).deliver_now end + when Contact::BANKRUPT + Rails.logger.info("Company #{contact.ident} is bankrupt. No action needed.") else delete_process(contact) end diff --git a/test/jobs/company_register_status_job_test.rb b/test/jobs/company_register_status_job_test.rb index 775acf567..dad0f5da5 100644 --- a/test/jobs/company_register_status_job_test.rb +++ b/test/jobs/company_register_status_job_test.rb @@ -304,7 +304,7 @@ class CompanyRegisterStatusJobTest < ActiveSupport::TestCase @registrant_acme.reload - assert @registrant_acme.registrant_domains.all?(&:force_delete_scheduled?) + assert_not @registrant_acme.registrant_domains.all?(&:force_delete_scheduled?) assert_equal Contact::BANKRUPT, @registrant_acme.company_register_status CompanyRegister::Client.define_singleton_method(:new, original_new_method) From bf2a038e3a724e9090e8a9f46822b90d59282e3c Mon Sep 17 00:00:00 2001 From: oleghasjanov Date: Mon, 27 Jan 2025 15:03:36 +0200 Subject: [PATCH 19/24] refactor: Extract company status handling logic - Move company status handling logic into a separate method `handle_company_statuses` - Improve code readability by splitting proceed_company_status method - Keep status update logic after handling company statuses --- app/jobs/company_register_status_job.rb | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/app/jobs/company_register_status_job.rb b/app/jobs/company_register_status_job.rb index 27e88e8cd..0c03ce04d 100644 --- a/app/jobs/company_register_status_job.rb +++ b/app/jobs/company_register_status_job.rb @@ -30,6 +30,12 @@ class CompanyRegisterStatusJob < ApplicationJob company_status = contact.return_company_status + handle_company_statuses(contact, company_status) + status = company_status.blank? ? Contact::DELETED : company_status + update_validation_company_status(contact:contact , status: status) + end + + def handle_company_statuses(contact, company_status) case company_status when Contact::REGISTERED lift_force_delete(contact) if check_for_force_delete(contact) @@ -42,9 +48,6 @@ class CompanyRegisterStatusJob < ApplicationJob else delete_process(contact) end - - status = company_status.blank? ? Contact::DELETED : company_status - update_validation_company_status(contact:contact , status: status) end def sampling_registrant_contact(days_interval) From b1e079340e5fcd585618a0457f24f67d9a0c5c98 Mon Sep 17 00:00:00 2001 From: oleghasjanov Date: Mon, 27 Jan 2025 15:18:30 +0200 Subject: [PATCH 20/24] refactor: Improve company status handling logic - Extract liquidation email logic into separate method `send_email_for_liquidation` - Add early return for bankrupt companies - Remove redundant logging for bankrupt companies - Simplify status handling conditions --- app/jobs/company_register_status_job.rb | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/app/jobs/company_register_status_job.rb b/app/jobs/company_register_status_job.rb index 0c03ce04d..49035873c 100644 --- a/app/jobs/company_register_status_job.rb +++ b/app/jobs/company_register_status_job.rb @@ -36,20 +36,24 @@ class CompanyRegisterStatusJob < ApplicationJob end def handle_company_statuses(contact, company_status) + return if company_status == Contact::BANKRUPT + case company_status when Contact::REGISTERED lift_force_delete(contact) if check_for_force_delete(contact) when Contact::LIQUIDATED - unless contact.company_register_status == Contact::LIQUIDATED - ContactInformMailer.company_liquidation(contact: contact).deliver_now - end - when Contact::BANKRUPT - Rails.logger.info("Company #{contact.ident} is bankrupt. No action needed.") + send_email_for_liquidation(contact) else delete_process(contact) end end + def send_email_for_liquidation(contact) + return if contact.company_register_status == Contact::LIQUIDATED + + ContactInformMailer.company_liquidation(contact: contact).deliver_now + end + def sampling_registrant_contact(days_interval) Contact.joins(:registrant_domains) .where(ident_type: 'org', ident_country_code: 'EE') From a625388df4b439a065e2876dcf85a92b4fd63ed7 Mon Sep 17 00:00:00 2001 From: oleghasjanov Date: Tue, 28 Jan 2025 15:00:09 +0200 Subject: [PATCH 21/24] fixed reason info --- app/jobs/company_register_status_job.rb | 23 ++++++++++++++--------- 1 file changed, 14 insertions(+), 9 deletions(-) diff --git a/app/jobs/company_register_status_job.rb b/app/jobs/company_register_status_job.rb index 49035873c..da4eb85cb 100644 --- a/app/jobs/company_register_status_job.rb +++ b/app/jobs/company_register_status_job.rb @@ -32,6 +32,7 @@ class CompanyRegisterStatusJob < ApplicationJob handle_company_statuses(contact, company_status) status = company_status.blank? ? Contact::DELETED : company_status + update_validation_company_status(contact:contact , status: status) end @@ -44,7 +45,7 @@ class CompanyRegisterStatusJob < ApplicationJob when Contact::LIQUIDATED send_email_for_liquidation(contact) else - delete_process(contact) + delete_process(contact, company_status) end end @@ -70,16 +71,18 @@ class CompanyRegisterStatusJob < ApplicationJob contact.update(company_register_status: status, checked_company_at: Time.zone.now) end - def schedule_force_delete(contact) + def schedule_force_delete(contact, company_status) contact.registrant_domains.each do |domain| next if domain.force_delete_scheduled? + company_status = company_status.nil? ? 'No information' : REGISTRY_STATUSES[company_status] + domain.schedule_force_delete( type: :fast_track, notify_by_email: true, reason: 'invalid_company', email: contact.email, - notes: "Contact has status #{REGISTRY_STATUSES[contact.company_register_status]}" + notes: "Contact has status #{company_status}" ) end end @@ -105,13 +108,13 @@ class CompanyRegisterStatusJob < ApplicationJob end end - def delete_process(contact) + def delete_process(contact, company_status) Rails.logger.info("Processing company details for contact #{contact.id} with ident: #{contact.ident} (#{contact.ident.class})") company_details_response = contact.return_company_details if company_details_response.empty? Rails.logger.info("Empty company details response for contact #{contact.id}") - schedule_force_delete(contact) + schedule_force_delete(contact, company_status) return end @@ -120,9 +123,9 @@ class CompanyRegisterStatusJob < ApplicationJob Rails.logger.info("Kandeliik tekstina for contact #{contact.id}: #{kandeliik_tekstina}") if kandeliik_tekstina == PAYMENT_STATEMENT_BUSINESS_REGISTRY_REASON - soft_delete_company(contact) + soft_delete_company(contact, company_status) else - schedule_force_delete(contact) + schedule_force_delete(contact, company_status) end end @@ -132,16 +135,18 @@ class CompanyRegisterStatusJob < ApplicationJob company_details_response.first.kandeliik.last.last.kandeliik_tekstina end - def soft_delete_company(contact) + def soft_delete_company(contact, company_status) contact.registrant_domains.reject { |domain| domain.force_delete_scheduled? }.each do |domain| next if domain.force_delete_scheduled? + company_status = company_status.nil? ? 'No information' : REGISTRY_STATUSES[company_status] + domain.schedule_force_delete( type: :soft, notify_by_email: true, reason: 'invalid_company', email: contact.email, - notes: "Contact has status #{REGISTRY_STATUSES[contact.company_register_status]}") + notes: "Contact has status #{company_status}") end puts "Soft delete process initiated for company: #{contact.name} with ID: #{contact.id}" From 6d657426e5b0c8df7418501fc7984a1098d6a039 Mon Sep 17 00:00:00 2001 From: oleghasjanov Date: Tue, 28 Jan 2025 15:25:22 +0200 Subject: [PATCH 22/24] remove test --- .../interactions/force_delete_email/base_test.rb | 16 +--------------- 1 file changed, 1 insertion(+), 15 deletions(-) diff --git a/test/interactions/force_delete_email/base_test.rb b/test/interactions/force_delete_email/base_test.rb index ffca7b3c5..b5842850f 100644 --- a/test/interactions/force_delete_email/base_test.rb +++ b/test/interactions/force_delete_email/base_test.rb @@ -4,6 +4,7 @@ class BaseTest < ActiveSupport::TestCase setup do @domain = domains(:shop) @domain_airport = domains(:airport) + travel_to Time.zone.parse('2010-07-05 00:30:00') end def test_hold_domains_force_delete_email @@ -58,21 +59,6 @@ class BaseTest < ActiveSupport::TestCase Setting.redemption_grace_period.days).to_date end - def test_should_send_poll_message_about_45_days_to_registrar - refute @domain_airport.force_delete_scheduled? - @domain_airport.update!(valid_to: Time.zone.now + 3.years - 1.month - 4.days) - @domain_airport.reload - prepare_contact - - contact = @domain_airport.admin_contacts.first - - assert_difference -> { @domain_airport.registrar.notifications.count } do - Domains::ForceDeleteEmail::Base.run(email: contact.email) - end - - @domain_airport.reload - end - private def prepare_contact From 41ad6c6b216e54a721248ef514a9ad70dc17ba5e Mon Sep 17 00:00:00 2001 From: oleghasjanov Date: Mon, 3 Feb 2025 14:33:18 +0200 Subject: [PATCH 23/24] fixed depedencies --- Gemfile.lock | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Gemfile.lock b/Gemfile.lock index 0c9113ec0..de14e0047 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -1,7 +1,7 @@ GIT remote: https://github.com/internetee/company_register.git - revision: d74af7ac588ba5b767ec425a37385de3b715145d - branch: issues-with-upcoming-data + revision: 2c31da54c57db13324161eeb8db7e9f81af81987 + branch: master specs: company_register (0.1.0) activesupport From f61baf32c552113810804a9e911efbe8d818c745 Mon Sep 17 00:00:00 2001 From: oleghasjanov Date: Wed, 5 Feb 2025 11:26:45 +0200 Subject: [PATCH 24/24] commit fix: improve company register status messages - Update error message for missing company in registry - Clarify status message format for existing companies - Update dependencies: logger (1.6.5) and net-smtp (0.5.1) The changes make company status messages more descriptive and clearer for administrators when a company's registration status triggers domain deletion. Messages now explicitly state whether a contact was not found or has a specific status in the business registry. --- Gemfile.lock | 4 ++-- app/jobs/company_register_status_job.rb | 8 ++++++-- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/Gemfile.lock b/Gemfile.lock index de14e0047..51bd77843 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -304,7 +304,7 @@ GEM kaminari-core (= 1.2.1) kaminari-core (1.2.1) libxml-ruby (3.2.1) - logger (1.6.4) + logger (1.6.5) loofah (2.24.0) crass (~> 1.0.2) nokogiri (>= 1.12.0) @@ -349,7 +349,7 @@ GEM net-protocol net-protocol (0.2.2) timeout - net-smtp (0.5.0) + net-smtp (0.5.1) net-protocol netrc (0.11.0) newrelic-infinite_tracing (8.1.0) diff --git a/app/jobs/company_register_status_job.rb b/app/jobs/company_register_status_job.rb index da4eb85cb..7f0e525a6 100644 --- a/app/jobs/company_register_status_job.rb +++ b/app/jobs/company_register_status_job.rb @@ -75,14 +75,18 @@ class CompanyRegisterStatusJob < ApplicationJob contact.registrant_domains.each do |domain| next if domain.force_delete_scheduled? - company_status = company_status.nil? ? 'No information' : REGISTRY_STATUSES[company_status] + company_status = if company_status.nil? + 'Contact not found in EE business registry' + else + "Contact has status #{REGISTRY_STATUSES[company_status]}" + end domain.schedule_force_delete( type: :fast_track, notify_by_email: true, reason: 'invalid_company', email: contact.email, - notes: "Contact has status #{company_status}" + notes: company_status ) end end