diff --git a/app/jobs/scan_csv_registry_businnes_contacts_job.rb b/app/jobs/scan_csv_registry_businnes_contacts_job.rb index bc60200b8..58aecfdc0 100644 --- a/app/jobs/scan_csv_registry_businnes_contacts_job.rb +++ b/app/jobs/scan_csv_registry_businnes_contacts_job.rb @@ -2,7 +2,7 @@ class ScanCsvRegistryBusinnesContactsJob < ApplicationJob def perform(filename) BusinessRegistryContact.delete_all - return p 'File not exist!' unless File.exist?(filename) + return unless File.exist?(filename) enumurate_csv_file(filename) end @@ -10,17 +10,12 @@ class ScanCsvRegistryBusinnesContactsJob < ApplicationJob private def enumurate_csv_file(filename) - i = 0 CSV.foreach(filename, headers: true, col_sep: ';') do |row| - record = BusinessRegistryContact.create( + BusinessRegistryContact.create( name: row[0], registry_code: row[1], status: row[5] ) - - i += 1 - - p "#{record} is successfully created - #{i} count" end end end diff --git a/lib/tasks/collect_invalid_validation_business_contacts.rake b/lib/tasks/collect_invalid_validation_business_contacts.rake index ce735816e..c6102aec1 100644 --- a/lib/tasks/collect_invalid_validation_business_contacts.rake +++ b/lib/tasks/collect_invalid_validation_business_contacts.rake @@ -1,78 +1,66 @@ -namespace :collect_invalid_contacts do +HEADERS = %w[domain id name code registrar].freeze + +namespace :contacts do desc 'Starts collect invalid validation contacts' - task all_domains: :environment do - # prepare_csv_file + task scan_org: :environment do + contacts = [] - Contact.all.each do |contact| - # email = convert_to_unicode(contact.email) - # result = Truemail.validate(email, with: :mx) + Contact.where(ident_type: 'org').each do |contact| + contacts << contact unless checking_contacts(contact) + end - # collect_data_for_csv(contact, result.result) unless result.result.success + magic_with_contacts(contacts) + end +end + +def checking_contacts(contact) + 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 = searching_domains(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 find_related_domains(contact) -# registrant_domains = Domain.where(registrant_id: contact.id) +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 = collect_tech_domains(contact) + admin_domains = collect_admin_domains(contact) -# tech_domains | admin_domains | registrant_domains -# end + tech_domains | admin_domains | registrant_domains +end -# def collect_admin_domains(contact) -# admin_domains = [] +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_contacts = AdminDomainContact.where(contact_id: contact.id) + admin_contacts.each do |c| + admin_domains << Domain.find(c.domain_id) + end -# admin_domains -# end + admin_domains +end -# def collect_tech_domains(contact) -# tech_domains = [] +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_contacts = TechDomainContact.where(contact_id: contact.id) + tech_contacts.each do |c| + tech_domains << Domain.find(c.domain_id) + end -# tech_domains -# end - -# def collect_data_for_csv(contact, result) -# domains = find_related_domains(contact) -# domains.reject! { |dom| dom.statuses.include? DomainStatus::FORCE_DELETE } - -# CSV.open('invalid_emails.csv', 'a') do |csv| -# domains.each do |domain| -# attrs = [] -# attrs.push(domain.name, contact.email, result.errors) - -# csv << attrs -# end -# end -# end - -# def prepare_csv_file -# headers = %w[ -# contact -# domain -# error -# ] -# csv = CSV.open('invalid_emails.csv', 'w') -# csv << headers -# end - -# def convert_to_unicode(email) -# original_domain = Mail::Address.new(email).domain -# decoded_domain = SimpleIDN.to_unicode(original_domain) - -# original_local = Mail::Address.new(email).local -# decoded_local = SimpleIDN.to_unicode(original_local) - -# "#{decoded_local}@#{decoded_domain}" -# end + tech_domains +end diff --git a/lib/tasks/collect_invalid_validation_contacts.rake b/lib/tasks/collect_invalid_validation_contacts.rake index 227c6a2b5..d1ba935bd 100644 --- a/lib/tasks/collect_invalid_validation_contacts.rake +++ b/lib/tasks/collect_invalid_validation_contacts.rake @@ -1,5 +1,5 @@ namespace :collect_invalid_contacts do - desc 'Starts collect invalid validation contacts' + desc 'Starts collect invalid business contacts' task all_domains: :environment do prepare_csv_file diff --git a/lib/tasks/scan_csv_registry_business_contacts.rake b/lib/tasks/scan_csv_registry_business_contacts.rake index c6a57e9b1..c95eb446f 100644 --- a/lib/tasks/scan_csv_registry_business_contacts.rake +++ b/lib/tasks/scan_csv_registry_business_contacts.rake @@ -1,8 +1,8 @@ +FILE_NAME = './ettevotja_rekvisiidid_init.csv'.freeze + namespace :collect_csv_data do desc 'Import from csv registry business contact into BusinessRegistryContact model' - FILE_NAME = './ettevotja_rekvisiidid_init.csv'.freeze - task business_contacts: :environment do ScanCsvRegistryBusinnesContactsJob.perform_later(FILE_NAME) end