internetee-registry/lib/tasks/collect_invalid_validation_business_contacts.rake
2021-07-05 16:31:44 +03:00

60 lines
1.4 KiB
Ruby

namespace :contacts do
desc 'Starts collect invalid validation contacts'
task scan_org: :environment do
csv = CSV.open('invalid_business_contacts.csv', 'w')
csv << set_headers
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
csv.close
end
end
private
def set_headers
%w[domain id name code registrar]
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 domain_filter(contact)
domains = searching_domains(contact)
domains.reject! { |dom| dom.statuses.include? DomainStatus::FORCE_DELETE }
domains
end
def searching_domains(contact)
registrant_domains = Domain.where(registrant_id: contact.id)
tech_domains = collect_tech_domains(contact)
tech_domains | registrant_domains
end
def collect_tech_domains(contact)
tech_domains = []
tech_contacts = TechDomainContact.where(contact_id: contact.id)
tech_contacts.each do |c|
tech_domains << Domain.find(c.domain_id)
end
tech_domains
end