mirror of
https://github.com/internetee/registry.git
synced 2025-06-06 04:37:30 +02:00
Merge pull request #2056 from internetee/1851-validate-estonian-company-data-from-business-registry
optimize searching
This commit is contained in:
commit
d20a9406be
1 changed files with 15 additions and 32 deletions
|
@ -3,37 +3,32 @@ HEADERS = %w[domain id name code registrar].freeze
|
|||
namespace :contacts do
|
||||
desc 'Starts collect invalid validation contacts'
|
||||
task scan_org: :environment do
|
||||
contacts = []
|
||||
csv = CSV.open('invalid_business_contacts.csv', 'w')
|
||||
csv << HEADERS
|
||||
|
||||
Contact.where(ident_type: 'org').each do |contact|
|
||||
contacts << contact unless checking_contacts(contact)
|
||||
Contact.where(ident_type: 'org').find_in_batches do |contact_group|
|
||||
contact_group.each do |contact|
|
||||
next if checking_contacts(contact)
|
||||
|
||||
domains = domain_filter(contact)
|
||||
domains.each do |domain|
|
||||
registrar = Registrar.find_by(id: domain.registrar_id)
|
||||
csv << [domain.name, contact.id, contact.name, contact.ident, registrar.name]
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
contacts.select! { |c| c.ident_country_code == 'EE' }
|
||||
magic_with_contacts(contacts)
|
||||
end
|
||||
end
|
||||
|
||||
def checking_contacts(contact)
|
||||
return true unless contact.ident_country_code == 'EE'
|
||||
|
||||
c = BusinessRegistryContact.find_by(registry_code: contact.ident)
|
||||
return false if c.nil? || c.status == 'N'
|
||||
|
||||
true
|
||||
end
|
||||
|
||||
def magic_with_contacts(contacts)
|
||||
CSV.open('invalid_business_contacts.csv', 'w') do |csv|
|
||||
csv << HEADERS
|
||||
contacts.each do |contact|
|
||||
domains = domain_filter(contact)
|
||||
domains.each do |domain|
|
||||
registrar = Registrar.find_by(id: domain.registrar_id)
|
||||
csv << [domain.name, contact.id, contact.name, contact.ident, registrar.name]
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
def domain_filter(contact)
|
||||
domains = searching_domains(contact)
|
||||
domains.reject! { |dom| dom.statuses.include? DomainStatus::FORCE_DELETE }
|
||||
|
@ -44,20 +39,8 @@ def searching_domains(contact)
|
|||
registrant_domains = Domain.where(registrant_id: contact.id)
|
||||
|
||||
tech_domains = collect_tech_domains(contact)
|
||||
admin_domains = collect_admin_domains(contact)
|
||||
|
||||
tech_domains | admin_domains | registrant_domains
|
||||
end
|
||||
|
||||
def collect_admin_domains(contact)
|
||||
admin_domains = []
|
||||
|
||||
admin_contacts = AdminDomainContact.where(contact_id: contact.id)
|
||||
admin_contacts.each do |c|
|
||||
admin_domains << Domain.find(c.domain_id)
|
||||
end
|
||||
|
||||
admin_domains
|
||||
tech_domains | registrant_domains
|
||||
end
|
||||
|
||||
def collect_tech_domains(contact)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue