Skip to content

Commit

Permalink
added tests
Browse files Browse the repository at this point in the history
  • Loading branch information
OlegPhenomenon committed Jul 11, 2023
1 parent 5b1fcfb commit 791aaa0
Show file tree
Hide file tree
Showing 8 changed files with 432 additions and 20 deletions.
39 changes: 22 additions & 17 deletions app/jobs/company_register_status_job.rb
Original file line number Diff line number Diff line change
@@ -1,29 +1,34 @@
class CompanyRegisterStatusJob < ApplicationJob
queue_as :default

def perform(contact, days_interval = 14.days)
return unless contact.org?
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
)

company_status = contact.return_company_status
return if company_status == Contact::REGISTERED || company_status == Contact::LIQUIDATED
registrants.find_in_batches(batch_size: 100) do |contacts|

contacts.each do |contact|

# TODO:
# Need search only registrants!!!
contacts = Contact.where(ident_type: 'org')
.where('checked_company_at IS NULL OR checked_company_at <= ?', days_interval.days.ago)
# avoid spamming company register
sleep spam_time_delay

contact.find_in_batches(batch_size: 100) do |contacts|
contacts.each do |contact|
# TODO:
# put some time interval here, otherwise it will be business registry spam
# check contact company for status
# if status is not registered or liquidated
# then force delete contact
company_status = contact.return_company_status
contact.company_register_status = company_status
contact.checked_company_at = Time.zone.now
contact.save!

# update checked_company_at field
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
end
end

end
end
2 changes: 1 addition & 1 deletion app/models/concerns/domain/force_delete.rb
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@ def hold_status?

def notification_template(explicit: nil)
reason = explicit&.downcase
return reason if %w[invalid_email invalid_phone].include?(reason)
return reason if %w[invalid_email invalid_phone invalid_company].include?(reason)

if contact_emails_verification_failed.present?
'invalid_email'
Expand Down
6 changes: 6 additions & 0 deletions app/models/contact/company_register.rb
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,12 @@ module Contact::CompanyRegister

REGISTERED = 'registered'
LIQUIDATED = 'liquidated'
BANKRUPT = 'bankrupt'
DELETED = 'deleted'

def company_is_relevant?
company_register_status == REGISTERED && company_register_status == LIQUIDATED
end

def return_company_status
return unless return_company_data.present?
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,49 @@
<p>Lugupeetud domeeni <%= @domain.name %> registreerija/halduskontakt</p>

<h1>THIS TEMPLATE FOR INVALID PHONE, BUT NEED TO CHANGE TEMAPLTE TO INVALID COMPANY!!!</h1>

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

<p>Et see olukord on vastuolus .ee <a href='https://www.internet.ee/domains/ee-domain-regulation'>domeenireeglitega</a> algatas EIS <%= @delete_period_length %> päeva pikkuse kustutusmenetluse. Menetluse käigus on domeen <%= @expire_warning_period %> esimest päeva internetis kättesaadav.</p>

<p>Andmete parandamiseks pöörduge palun oma registripidaja <%= @registrar.name %> poole või isiklike ja oma ettevõtte andmete puhul <a href="https://registrant.internet.ee/">registreerija portaali</a>.</p>

<p>Kui kontaktandmed ei ole <%= @delete_period_length %> päeva jooksul parandatud, läheb domeen <%= @domain.name %> <%= @domain.force_delete_date %> domeenioksjonile <a href="https://auction.internet.ee">.ee oksjonikeskkonda</a>. 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 <a href="https://www.internet.ee/domeenid/domeenide-oksjonikeskkonna-kasutajatingimused#3-oksjonikeskkonna-enampakkumisel-osalemise-tingimused">siit</a>.</p>

<p>Lisaküsimuste korral võtke palun ühendust oma registripidajaga:</p>
<%= render 'mailers/shared/registrar/registrar.et.html', registrar: @registrar %>

<%= render 'mailers/shared/signatures/signature.et.html' %>

<hr>

<p>Dear registrant/administrative contact of .ee domain,</p>

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

<p>Since this is a violation of <a href='https://www.internet.ee/domains/ee-domain-regulation'>Estonian domain regulations</a>, <%= @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.</p>

<p>Please, contact your registrar <%= @registrar.name %> with updated contact data, or in case of your personal or business data use <a href="https://registrant.internet.ee/">.ee portal for registrants</a></p>

<p>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 <a href="https://auction.internet.ee">.ee auction environment</a>. 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 <a href="https://www.internet.ee/domains/auction-environment-user-agreement#3-terms-and-conditions-for-participation-in-the-auction-of-the-auction-environment">here</a>.</p>

<p>Should you have additional questions, please contact your registrar:</p>
<%= render 'mailers/shared/registrar/registrar.en.html', registrar: @registrar %>

<%= render 'mailers/shared/signatures/signature.en.html' %>
<hr>

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

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

<p>Так как это является нарушением <a href='https://www.internet.ee/domains/ee-domain-regulation'>Правил домена .ee</a>, <%= @delete_period_length %>-дневный процесс удаления начат для доменного имени <%= @domain.name %>. В течение первых <%= @expire_warning_period %> дней домен будет доступен в интернете.</p>

<p>Для уточнения контактных данных, пожалуйста, свяжитесь с регистратором <%= @registrar.name %>, либо воспользуйтесь <a href="https://registrant.internet.ee/">порталом для регистрантов</a></p>

<p>Если контактные данные не будут исправлены в течение <%= @delete_period_length %> дней, домен <%= @domain.name %> отправится <%= @domain.force_delete_date %> на доменный аукцион в <a href="https://auction.internet.ee">аукционной среде.ee</a>. Если в течение 24 часов в отношении домена <%= @domain.name %> е поступит предложений, домен освободится и станет доступным для всех желающих по принципу «кто раньше». О других возможных результатах аукциона читайте <a href="https://www.internet.ee/domains/auction-environment-user-agreement#3-terms-and-conditions-for-participation-in-the-auction-of-the-auction-environment">здесь</a>.</p>

<p>В случае возникновения дополнительных вопросов свяжитесь, пожалуйста, со своим регистратором:
<%= render 'mailers/shared/registrar/registrar.ru.html', registrar: @registrar %></p>

<%= render 'mailers/shared/signatures/signature.ru.html' %>
Original file line number Diff line number Diff line change
@@ -0,0 +1,49 @@
<p>Lugupeetud domeeni <%= @domain.name %> registreerija/halduskontakt</p>

<h1>THIS TEMPLATE FOR INVALID PHONE, BUT NEED TO CHANGE TEMAPLTE TO INVALID COMPANY!!!</h1>

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

<p>Et see olukord on vastuolus .ee <a href='https://www.internet.ee/domains/ee-domain-regulation'>domeenireeglitega</a> algatas EIS <%= @delete_period_length %> päeva pikkuse kustutusmenetluse. Menetluse käigus on domeen <%= @expire_warning_period %> esimest päeva internetis kättesaadav.</p>

<p>Andmete parandamiseks pöörduge palun oma registripidaja <%= @registrar.name %> poole või isiklike ja oma ettevõtte andmete puhul <a href="https://registrant.internet.ee/">registreerija portaali</a>.</p>

<p>Kui kontaktandmed ei ole <%= @delete_period_length %> päeva jooksul parandatud, läheb domeen <%= @domain.name %> <%= @domain.force_delete_date %> domeenioksjonile <a href="https://auction.internet.ee">.ee oksjonikeskkonda</a>. 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 <a href="https://www.internet.ee/domeenid/domeenide-oksjonikeskkonna-kasutajatingimused#3-oksjonikeskkonna-enampakkumisel-osalemise-tingimused">siit</a>.</p>

<p>Lisaküsimuste korral võtke palun ühendust oma registripidajaga:</p>
<%= render 'mailers/shared/registrar/registrar.et.html', registrar: @registrar %>

<%= render 'mailers/shared/signatures/signature.et.html' %>

<hr>

<p>Dear registrant/administrative contact of .ee domain,</p>

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

<p>Since this is a violation of <a href='https://www.internet.ee/domains/ee-domain-regulation'>Estonian domain regulations</a>, <%= @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.</p>

<p>Please, contact your registrar <%= @registrar.name %> with updated contact data, or in case of your personal or business data use <a href="https://registrant.internet.ee/">.ee portal for registrants</a></p>

<p>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 <a href="https://auction.internet.ee">.ee auction environment</a>. 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 <a href="https://www.internet.ee/domains/auction-environment-user-agreement#3-terms-and-conditions-for-participation-in-the-auction-of-the-auction-environment">here</a>.</p>

<p>Should you have additional questions, please contact your registrar:</p>
<%= render 'mailers/shared/registrar/registrar.en.html', registrar: @registrar %>

<%= render 'mailers/shared/signatures/signature.en.html' %>
<hr>

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

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

<p>Так как это является нарушением <a href='https://www.internet.ee/domains/ee-domain-regulation'>Правил домена .ee</a>, <%= @delete_period_length %>-дневный процесс удаления начат для доменного имени <%= @domain.name %>. В течение первых <%= @expire_warning_period %> дней домен будет доступен в интернете.</p>

<p>Для уточнения контактных данных, пожалуйста, свяжитесь с регистратором <%= @registrar.name %>, либо воспользуйтесь <a href="https://registrant.internet.ee/">порталом для регистрантов</a></p>

<p>Если контактные данные не будут исправлены в течение <%= @delete_period_length %> дней, домен <%= @domain.name %> отправится <%= @domain.force_delete_date %> на доменный аукцион в <a href="https://auction.internet.ee">аукционной среде.ee</a>. Если в течение 24 часов в отношении домена <%= @domain.name %> е поступит предложений, домен освободится и станет доступным для всех желающих по принципу «кто раньше». О других возможных результатах аукциона читайте <a href="https://www.internet.ee/domains/auction-environment-user-agreement#3-terms-and-conditions-for-participation-in-the-auction-of-the-auction-environment">здесь</a>.</p>

<p>В случае возникновения дополнительных вопросов свяжитесь, пожалуйста, со своим регистратором:
<%= render 'mailers/shared/registrar/registrar.ru.html', registrar: @registrar %></p>

<%= render 'mailers/shared/signatures/signature.ru.html' %>
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
class AddCompanyRegisterStatusToContacts < ActiveRecord::Migration[6.1]
def change
add_column :contacts, :company_register_status, :string
end
end
7 changes: 5 additions & 2 deletions db/structure.sql
Original file line number Diff line number Diff line change
Expand Up @@ -686,7 +686,8 @@ CREATE TABLE public.contacts (
disclosed_attributes character varying[] DEFAULT '{}'::character varying[] NOT NULL,
email_history character varying,
registrant_publishable boolean DEFAULT false,
checked_company_at timestamp without time zone
checked_company_at timestamp without time zone,
company_register_status character varying
);


Expand Down Expand Up @@ -4713,6 +4714,7 @@ CREATE INDEX index_versions_on_item_type_and_item_id ON public.versions USING bt

CREATE INDEX index_whois_records_on_domain_id ON public.whois_records USING btree (domain_id);


--
-- Name: index_whois_records_on_registrar_id; Type: INDEX; Schema: public; Owner: -
--
Expand Down Expand Up @@ -5466,6 +5468,7 @@ INSERT INTO "schema_migrations" (version) VALUES
('20230612094319'),
('20230612094326'),
('20230612094335'),
('20230710120154');
('20230710120154'),
('20230711083811');


Loading

0 comments on commit 791aaa0

Please sign in to comment.