diff --git a/app/interactions/actions/contact_create.rb b/app/interactions/actions/contact_create.rb index f8e3dbe9ef..fb47603784 100644 --- a/app/interactions/actions/contact_create.rb +++ b/app/interactions/actions/contact_create.rb @@ -80,7 +80,7 @@ def maybe_company_is_relevant return true unless contact.org? company_status = contact.return_company_status - return if company_status == Contact::REGISTERED || company_status == Contact::LIQUIDATED + return if [Contact::REGISTERED, Contact::LIQUIDATED].include? company_status contact.add_epp_error('2003', nil, 'ident', I18n.t('errors.messages.company_not_registered')) @error = true diff --git a/app/jobs/company_register_status_job.rb b/app/jobs/company_register_status_job.rb index df39ea56bb..fb74718f3c 100644 --- a/app/jobs/company_register_status_job.rb +++ b/app/jobs/company_register_status_job.rb @@ -1,34 +1,40 @@ class CompanyRegisterStatusJob < ApplicationJob queue_as :default - def perform(days_interval = 14, spam_time_delay=0.3) - registrants = Registrant.where(ident_type: 'org') - .where( - '(company_register_status IS NULL) OR - (company_register_status = ? AND (checked_company_at IS NULL OR checked_company_at <= ?)) OR - (company_register_status = ? AND (checked_company_at IS NULL OR checked_company_at <= ?))', - Contact::REGISTERED, days_interval.days.ago, - Contact::LIQUIDATED, 1.day.ago - ) - - registrants.find_in_batches(batch_size: 100) do |contacts| - + def perform(days_interval = 14, spam_time_delay = 0.2, batch_size = 100) + sampling_registrant_contact(days_interval).find_in_batches(batch_size: batch_size) do |contacts| contacts.each do |contact| - # avoid spamming company register sleep spam_time_delay company_status = contact.return_company_status - contact.company_register_status = company_status - contact.checked_company_at = Time.zone.now - contact.save! + contact.update!(company_register_status: company_status, checked_company_at: Time.zone.now) + + next unless [Contact::BANKRUPT, Contact::DELETED].include? company_status - next unless company_status == Contact::BANKRUPT || company_status == Contact::DELETED - - contact.domains.each do |domain| - domain.schedule_force_delete(type: :fast_track, notify_by_email: true, reason: 'invalid_company', email: contact.email) - end + schedule_force_delete(contact) end end end + + private + + def sampling_registrant_contact(days_interval) + Registrant.where(ident_type: 'org') + .where('(company_register_status IS NULL) OR + (company_register_status = ? AND (checked_company_at IS NULL OR checked_company_at <= ?)) OR + (company_register_status = ? AND (checked_company_at IS NULL OR checked_company_at <= ?))', + Contact::REGISTERED, days_interval.days.ago, Contact::LIQUIDATED, 1.day.ago) + end + + def schedule_force_delete(contact) + contact.domains.each do |domain| + domain.schedule_force_delete( + type: :fast_track, + notify_by_email: true, + reason: 'invalid_company', + email: contact.email + ) + end + end end diff --git a/app/models/contact/company_register.rb b/app/models/contact/company_register.rb index 6115cecc29..94f6fd049e 100644 --- a/app/models/contact/company_register.rb +++ b/app/models/contact/company_register.rb @@ -6,19 +6,19 @@ module Contact::CompanyRegister 'l' => 'liquidated', 'n' => 'bankrupt', 'k' => 'deleted', -}.freeze + }.freeze - REGISTERED = 'registered' - LIQUIDATED = 'liquidated' - BANKRUPT = 'bankrupt' - DELETED = 'deleted' + REGISTERED = 'registered'.freeze + LIQUIDATED = 'liquidated'.freeze + BANKRUPT = 'bankrupt'.freeze + DELETED = 'deleted'.freeze def company_is_relevant? company_register_status == REGISTERED && company_register_status == LIQUIDATED end def return_company_status - return unless return_company_data.present? + return if return_company_data.blank? status = return_company_data.first[:status].downcase COMPANY_STATUSES[status] diff --git a/app/views/mailers/domain_delete_mailer/forced/invalid_company.html.erb b/app/views/mailers/domain_delete_mailer/forced/invalid_company.html.erb index 3bb21a1c68..72e7eeac33 100644 --- a/app/views/mailers/domain_delete_mailer/forced/invalid_company.html.erb +++ b/app/views/mailers/domain_delete_mailer/forced/invalid_company.html.erb @@ -1,12 +1,10 @@

Lugupeetud domeeni <%= @domain.name %> registreerija/halduskontakt

-

THIS TEMPLATE FOR INVALID PHONE, BUT NEED TO CHANGE TEMAPLTE TO INVALID COMPANY!!!

+

Eesti Interneti Sihtasutusele on saanud teatavaks, et juriidiline isik registrikoodiga <%= @domain.registrant.ident %> on äriregistrist kustutatud.

-

Eesti Interneti Sihtasutusele (EIS) on saanud teatavaks, et domeeni <%= @domain.name %> kontakti(de) telefoni number või numbrid on puudulikud.

+

Kuna äriregistrist kustutatud juriidiline isik ei saa olla domeeni registreerijaks, algas domeeni <%= @domain.name %> suhtes 45 päevane kustutusmenetlus. Menetluse käigus on domeen 15 esimest päeva internetis kättesaadav.

-

Et see olukord on vastuolus .ee domeenireeglitega algatas EIS <%= @delete_period_length %> päeva pikkuse kustutusmenetluse. Menetluse käigus on domeen <%= @expire_warning_period %> esimest päeva internetis kättesaadav.

- -

Andmete parandamiseks pöörduge palun oma registripidaja <%= @registrar.name %> poole või isiklike ja oma ettevõtte andmete puhul registreerija portaali.

+

Domeeni suhtes õigust omaval isikul on võimalus esitada domeeni <%= @domain.name %> registripidajale <%= @registrar.name %> domeeni üleandmise taotlus koos seda tõendava dokumendiga.

Kui kontaktandmed ei ole <%= @delete_period_length %> päeva jooksul parandatud, läheb domeen <%= @domain.name %> <%= @domain.force_delete_date %> domeenioksjonile .ee oksjonikeskkonda. Juhul kui domeenile <%= @domain.name %> ei tehta oksjonil 24h möödudes pakkumist, domeen vabaneb ja on registreerimiseks vabalt kättesaadav kõigile huvilistele. Muude võimalike oksjoni tulemuste kohta loe siit.

@@ -19,11 +17,11 @@

Dear registrant/administrative contact of .ee domain,

-

Estonian Internet Foundation has learned that contact(s) phone number data of the domain <%= @domain.name %> are invalid.

+

Estonian Internet Foundation has learned that the legal person with registry code <%= @domain.registrant.ident %> has been deleted from the Business Registry.

-

Since this is a violation of Estonian domain regulations, <%= @delete_period_length %>-day deletion process has started for the <%= @domain.name %> domain. For the first <%= @expire_warning_period %> days the domain will remain available on the Internet during the deletion process.

+

As a terminated legal person cannot be the registrant of a domain, a 45-day deletion process has started for the <%= @domain.name %> domain. For the first 15 days the domain will remain available on the Internet during the deletion process.

-

Please, contact your registrar <%= @registrar.name %> with updated contact data, or in case of your personal or business data use .ee portal for registrants

+

The registrant holding a right to the domain name <%= @domain.name %> can submit a domain name transfer application to the registrar <%= @registrar.name %> with legal documentation.

If the data is not fixed within <%= @delete_period_length %> days, the domain <%= @domain.name %> will go to domain auction on <%= @domain.force_delete_date %> in the .ee auction environment. If no offer is made for the domain <%= @domain.name %> at auction within 24 hours, the domain will be released and made freely available for registration to anyone interested on a first-come, first-served basis. Read more about other potential auction results here.

@@ -35,11 +33,11 @@

Уважаемый регистрант/административный контакт домена .ee

-

Целевому учреждению Eesti Internet (EIS) стало известно, что контактные данные домена <%= @domain.name %> неверны - телефонные номера.

+

Целевому учреждению Eesti Internet (EIS) стало известно, что юридическое лицо с регистрационным кодом <%= @domain.registrant.ident %> удалено из коммерческого реестра.

-

Так как это является нарушением Правил домена .ee, <%= @delete_period_length %>-дневный процесс удаления начат для доменного имени <%= @domain.name %>. В течение первых <%= @expire_warning_period %> дней домен будет доступен в интернете.

+

Поскольку удаленное из коммерческого регистра юридическое лицо не может являться регистрантом домена, <%= Date.today.strftime('%d.%m.%y') %> начат 45-дневный процесс удаления домена <%= @domain.name %>. Домен доступен в интернете на протяжении 15 дней после начала процесса удаления.

-

Для уточнения контактных данных, пожалуйста, свяжитесь с регистратором <%= @registrar.name %>, либо воспользуйтесь порталом для регистрантов

+

Лицо, обладающее правом на домен, может подать регистратору <%= @registrar.name %> домена <%= @domain.name %> ходатайство о передаче домена, представив вместе с ходатайством подтверждающие документы. Документы должны быть представлены регистратору в течение 45 дней.

Если контактные данные не будут исправлены в течение <%= @delete_period_length %> дней, домен <%= @domain.name %> отправится <%= @domain.force_delete_date %> на доменный аукцион в аукционной среде.ee. Если в течение 24 часов в отношении домена <%= @domain.name %> е поступит предложений, домен освободится и станет доступным для всех желающих по принципу «кто раньше». О других возможных результатах аукциона читайте здесь.

diff --git a/app/views/mailers/domain_delete_mailer/forced/invalid_company.text.erb b/app/views/mailers/domain_delete_mailer/forced/invalid_company.text.erb index d2cb87e44a..767a80c1bf 100644 --- a/app/views/mailers/domain_delete_mailer/forced/invalid_company.text.erb +++ b/app/views/mailers/domain_delete_mailer/forced/invalid_company.text.erb @@ -1,12 +1,10 @@

Lugupeetud domeeni <%= @domain.name %> registreerija/halduskontakt

-

THIS TEMPLATE FOR INVALID PHONE, BUT NEED TO CHANGE TEMAPLTE TO INVALID COMPANY!!!

+

Eesti Interneti Sihtasutusele on saanud teatavaks, et juriidiline isik registrikoodiga <%= @domain.registrant.ident %> on äriregistrist kustutatud.

-

Eesti Interneti Sihtasutusele (EIS) on saanud teatavaks, et domeeni <%= @domain.name %> kontakti(de) telefoni number või numbrid on puudulikud.

+

Kuna äriregistrist kustutatud juriidiline isik ei saa olla domeeni registreerijaks, algas domeeni <%= @domain.name %> suhtes 45 päevane kustutusmenetlus. Menetluse käigus on domeen 15 esimest päeva internetis kättesaadav.

-

Et see olukord on vastuolus .ee domeenireeglitega algatas EIS <%= @delete_period_length %> päeva pikkuse kustutusmenetluse. Menetluse käigus on domeen <%= @expire_warning_period %> esimest päeva internetis kättesaadav.

- -

Andmete parandamiseks pöörduge palun oma registripidaja <%= @registrar.name %> poole või isiklike ja oma ettevõtte andmete puhul registreerija portaali.

+

Domeeni suhtes õigust omaval isikul on võimalus esitada domeeni <%= @domain.name %> registripidajale <%= @registrar.name %> domeeni üleandmise taotlus koos seda tõendava dokumendiga.

Kui kontaktandmed ei ole <%= @delete_period_length %> päeva jooksul parandatud, läheb domeen <%= @domain.name %> <%= @domain.force_delete_date %> domeenioksjonile .ee oksjonikeskkonda. Juhul kui domeenile <%= @domain.name %> ei tehta oksjonil 24h möödudes pakkumist, domeen vabaneb ja on registreerimiseks vabalt kättesaadav kõigile huvilistele. Muude võimalike oksjoni tulemuste kohta loe siit.

@@ -20,10 +18,11 @@

Dear registrant/administrative contact of .ee domain,

Estonian Internet Foundation has learned that contact(s) phone number data of the domain <%= @domain.name %> are invalid.

+

Estonian Internet Foundation has learned that the legal person with registry code <%= @domain.registrant.ident %> has been deleted from the Business Registry.

-

Since this is a violation of Estonian domain regulations, <%= @delete_period_length %>-day deletion process has started for the <%= @domain.name %> domain. For the first <%= @expire_warning_period %> days the domain will remain available on the Internet during the deletion process.

+

As a terminated legal person cannot be the registrant of a domain, a 45-day deletion process has started for the <%= @domain.name %> domain. For the first 15 days the domain will remain available on the Internet during the deletion process.

-

Please, contact your registrar <%= @registrar.name %> with updated contact data, or in case of your personal or business data use .ee portal for registrants

+

The registrant holding a right to the domain name <%= @domain.name %> can submit a domain name transfer application to the registrar <%= @registrar.name %> with legal documentation.

If the data is not fixed within <%= @delete_period_length %> days, the domain <%= @domain.name %> will go to domain auction on <%= @domain.force_delete_date %> in the .ee auction environment. If no offer is made for the domain <%= @domain.name %> at auction within 24 hours, the domain will be released and made freely available for registration to anyone interested on a first-come, first-served basis. Read more about other potential auction results here.

@@ -35,11 +34,11 @@

Уважаемый регистрант/административный контакт домена .ee

-

Целевому учреждению Eesti Internet (EIS) стало известно, что контактные данные домена <%= @domain.name %> неверны - телефонные номера.

+

Целевому учреждению Eesti Internet (EIS) стало известно, что юридическое лицо с регистрационным кодом <%= @domain.registrant.ident %> удалено из коммерческого реестра.

-

Так как это является нарушением Правил домена .ee, <%= @delete_period_length %>-дневный процесс удаления начат для доменного имени <%= @domain.name %>. В течение первых <%= @expire_warning_period %> дней домен будет доступен в интернете.

+

Поскольку удаленное из коммерческого регистра юридическое лицо не может являться регистрантом домена, <%= Date.today.strftime('%d.%m.%y') %> начат 45-дневный процесс удаления домена <%= @domain.name %>. Домен доступен в интернете на протяжении 15 дней после начала процесса удаления.

-

Для уточнения контактных данных, пожалуйста, свяжитесь с регистратором <%= @registrar.name %>, либо воспользуйтесь порталом для регистрантов

+

Лицо, обладающее правом на домен, может подать регистратору <%= @registrar.name %> домена <%= @domain.name %> ходатайство о передаче домена, представив вместе с ходатайством подтверждающие документы. Документы должны быть представлены регистратору в течение 45 дней.

Если контактные данные не будут исправлены в течение <%= @delete_period_length %> дней, домен <%= @domain.name %> отправится <%= @domain.force_delete_date %> на доменный аукцион в аукционной среде.ee. Если в течение 24 часов в отношении домена <%= @domain.name %> е поступит предложений, домен освободится и станет доступным для всех желающих по принципу «кто раньше». О других возможных результатах аукциона читайте здесь.

diff --git a/test/models/contact/company_register_test.rb b/test/models/contact/company_register_test.rb index 3f8e15cb01..c62e3555b6 100644 --- a/test/models/contact/company_register_test.rb +++ b/test/models/contact/company_register_test.rb @@ -10,7 +10,18 @@ def setup end def test_return_company_status + original_new_method = CompanyRegister::Client.method(:new) + CompanyRegister::Client.define_singleton_method(:new) do + object = original_new_method.call + def object.company_details(registration_number:) + [Company.new('1234567', 'ACME Ltd', 'R')] + end + object + end + assert_equal 'registered', @acme_ltd.return_company_status + + CompanyRegister::Client.define_singleton_method(:new, original_new_method) end def test_return_company_data