From aaaae888bf16e8b450c0d49d028df1588d1172f5 Mon Sep 17 00:00:00 2001 From: Oleg Hasjanov Date: Thu, 17 Jun 2021 11:06:57 +0300 Subject: [PATCH 1/5] implement asynchronous rake task for collect contact data from csv --- ...scan_csv_registry_businnes_contacts_job.rb | 21 ++++++++ app/models/business_registry_contact.rb | 2 + ...12332_create_business_registry_contacts.rb | 11 ++++ db/structure.sql | 54 +++++++++++++++++-- .../scan_csv_registry_business_contacts.rake | 7 +++ 5 files changed, 92 insertions(+), 3 deletions(-) create mode 100644 app/jobs/scan_csv_registry_businnes_contacts_job.rb create mode 100644 app/models/business_registry_contact.rb create mode 100644 db/migrate/20210616112332_create_business_registry_contacts.rb create mode 100644 lib/tasks/scan_csv_registry_business_contacts.rake diff --git a/app/jobs/scan_csv_registry_businnes_contacts_job.rb b/app/jobs/scan_csv_registry_businnes_contacts_job.rb new file mode 100644 index 000000000..ac260a728 --- /dev/null +++ b/app/jobs/scan_csv_registry_businnes_contacts_job.rb @@ -0,0 +1,21 @@ +class ScanCsvRegistryBusinnesContactsJob < ApplicationJob + FILE_NAME = './ettevotja_rekvisiidid_init.csv'.freeze + def perform + BusinessRegistryContact.delete_all + + return p 'File not exist!' unless File.exist?(FILE_NAME) + + CSV.foreach(FILE_NAME, headers: true, col_sep: ";") do |row| + name = row[0] + code = row[1] + status = row[5] + + record = BusinessRegistryContact.create({ + name: name, + registry_code: code, + status: status + }) + p "#{record} is successfully created - #{BusinessRegistryContact.count} count" + end + end +end diff --git a/app/models/business_registry_contact.rb b/app/models/business_registry_contact.rb new file mode 100644 index 000000000..432d1233e --- /dev/null +++ b/app/models/business_registry_contact.rb @@ -0,0 +1,2 @@ +class BusinessRegistryContact < ApplicationRecord +end diff --git a/db/migrate/20210616112332_create_business_registry_contacts.rb b/db/migrate/20210616112332_create_business_registry_contacts.rb new file mode 100644 index 000000000..a5db78ecc --- /dev/null +++ b/db/migrate/20210616112332_create_business_registry_contacts.rb @@ -0,0 +1,11 @@ +class CreateBusinessRegistryContacts < ActiveRecord::Migration[6.1] + def change + create_table :business_registry_contacts do |t| + t.string :name + t.string :registry_code + t.string :status + + t.timestamps + end + end +end diff --git a/db/structure.sql b/db/structure.sql index fc15cbe44..481732b8a 100644 --- a/db/structure.sql +++ b/db/structure.sql @@ -497,6 +497,39 @@ CREATE SEQUENCE public.bounced_mail_addresses_id_seq ALTER SEQUENCE public.bounced_mail_addresses_id_seq OWNED BY public.bounced_mail_addresses.id; +-- +-- Name: business_registry_contacts; Type: TABLE; Schema: public; Owner: - +-- + +CREATE TABLE public.business_registry_contacts ( + id bigint NOT NULL, + name character varying, + registry_code character varying, + status character varying, + created_at timestamp(6) without time zone NOT NULL, + updated_at timestamp(6) without time zone NOT NULL +); + + +-- +-- Name: business_registry_contacts_id_seq; Type: SEQUENCE; Schema: public; Owner: - +-- + +CREATE SEQUENCE public.business_registry_contacts_id_seq + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + + +-- +-- Name: business_registry_contacts_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: - +-- + +ALTER SEQUENCE public.business_registry_contacts_id_seq OWNED BY public.business_registry_contacts.id; + + -- -- Name: certificates; Type: TABLE; Schema: public; Owner: - -- @@ -541,7 +574,6 @@ ALTER SEQUENCE public.certificates_id_seq OWNED BY public.certificates.id; -- CREATE TABLE public.contact_requests ( - id integer NOT NULL, whois_record_id integer NOT NULL, secret character varying NOT NULL, @@ -553,7 +585,6 @@ CREATE TABLE public.contact_requests ( created_at timestamp without time zone NOT NULL, updated_at timestamp without time zone NOT NULL, message_id character varying - ); @@ -575,6 +606,7 @@ CREATE SEQUENCE public.contact_requests_id_seq ALTER SEQUENCE public.contact_requests_id_seq OWNED BY public.contact_requests.id; + -- -- Name: contacts; Type: TABLE; Schema: public; Owner: - -- @@ -2766,6 +2798,13 @@ ALTER TABLE ONLY public.blocked_domains ALTER COLUMN id SET DEFAULT nextval('pub ALTER TABLE ONLY public.bounced_mail_addresses ALTER COLUMN id SET DEFAULT nextval('public.bounced_mail_addresses_id_seq'::regclass); +-- +-- Name: business_registry_contacts id; Type: DEFAULT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY public.business_registry_contacts ALTER COLUMN id SET DEFAULT nextval('public.business_registry_contacts_id_seq'::regclass); + + -- -- Name: certificates id; Type: DEFAULT; Schema: public; Owner: - -- @@ -3230,6 +3269,14 @@ ALTER TABLE ONLY public.bounced_mail_addresses ADD CONSTRAINT bounced_mail_addresses_pkey PRIMARY KEY (id); +-- +-- Name: business_registry_contacts business_registry_contacts_pkey; Type: CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY public.business_registry_contacts + ADD CONSTRAINT business_registry_contacts_pkey PRIMARY KEY (id); + + -- -- Name: certificates certificates_pkey; Type: CONSTRAINT; Schema: public; Owner: - -- @@ -5104,6 +5151,7 @@ INSERT INTO "schema_migrations" (version) VALUES ('20200916125326'), ('20200917104213'), ('20200921084356'), -('20210215101019'); +('20210215101019'), +('20210616112332'); diff --git a/lib/tasks/scan_csv_registry_business_contacts.rake b/lib/tasks/scan_csv_registry_business_contacts.rake new file mode 100644 index 000000000..7de414d0e --- /dev/null +++ b/lib/tasks/scan_csv_registry_business_contacts.rake @@ -0,0 +1,7 @@ +namespace :collect_csv_data do + desc 'Import from csv registry business contact into BusinessRegistryContact model' + + task business_contacts: :environment do + ScanCsvRegistryBusinnesContactsJob.perform_later + end +end \ No newline at end of file From 0d40feb9c0edd619718db8fb26974729a208bea9 Mon Sep 17 00:00:00 2001 From: Oleg Hasjanov Date: Thu, 17 Jun 2021 11:44:15 +0300 Subject: [PATCH 2/5] refactoring --- ...scan_csv_registry_businnes_contacts_job.rb | 37 +++++++++++-------- .../scan_csv_registry_business_contacts.rake | 8 ++-- 2 files changed, 26 insertions(+), 19 deletions(-) diff --git a/app/jobs/scan_csv_registry_businnes_contacts_job.rb b/app/jobs/scan_csv_registry_businnes_contacts_job.rb index ac260a728..fd5937488 100644 --- a/app/jobs/scan_csv_registry_businnes_contacts_job.rb +++ b/app/jobs/scan_csv_registry_businnes_contacts_job.rb @@ -1,21 +1,28 @@ class ScanCsvRegistryBusinnesContactsJob < ApplicationJob - FILE_NAME = './ettevotja_rekvisiidid_init.csv'.freeze + FILE_NAME = './ettevotja_rekvisiidid_init.csv'.freeze + def perform - BusinessRegistryContact.delete_all + BusinessRegistryContact.delete_all - return p 'File not exist!' unless File.exist?(FILE_NAME) + return p 'File not exist!' unless File.exist?(FILE_NAME) - CSV.foreach(FILE_NAME, headers: true, col_sep: ";") do |row| - name = row[0] - code = row[1] - status = row[5] + enumurate_csv_file + end - record = BusinessRegistryContact.create({ - name: name, - registry_code: code, - status: status - }) - p "#{record} is successfully created - #{BusinessRegistryContact.count} count" - end - end + private + + def enumurate_csv_file + i = 0 + CSV.foreach(FILE_NAME, headers: true, col_sep: ';') do |row| + record = 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/scan_csv_registry_business_contacts.rake b/lib/tasks/scan_csv_registry_business_contacts.rake index 7de414d0e..4d481129e 100644 --- a/lib/tasks/scan_csv_registry_business_contacts.rake +++ b/lib/tasks/scan_csv_registry_business_contacts.rake @@ -1,7 +1,7 @@ namespace :collect_csv_data do - desc 'Import from csv registry business contact into BusinessRegistryContact model' - + desc 'Import from csv registry business contact into BusinessRegistryContact model' + task business_contacts: :environment do - ScanCsvRegistryBusinnesContactsJob.perform_later + ScanCsvRegistryBusinnesContactsJob.perform_now end -end \ No newline at end of file +end From 7c8c9120b59abde2dac030ae68f1c3fa4db71669 Mon Sep 17 00:00:00 2001 From: Oleg Hasjanov Date: Thu, 17 Jun 2021 13:04:44 +0300 Subject: [PATCH 3/5] added test --- ...scan_csv_registry_businnes_contacts_job.rb | 12 ++- ..._invalid_validation_business_contacts.rake | 78 +++++++++++++++++++ .../scan_csv_registry_business_contacts.rake | 4 +- test/fixtures/files/ette.csv | 10 +++ ...csv_registry_businnes_contacts_job_test.rb | 11 +++ 5 files changed, 107 insertions(+), 8 deletions(-) create mode 100644 lib/tasks/collect_invalid_validation_business_contacts.rake create mode 100644 test/fixtures/files/ette.csv create mode 100644 test/jobs/scan_csv_registry_businnes_contacts_job_test.rb diff --git a/app/jobs/scan_csv_registry_businnes_contacts_job.rb b/app/jobs/scan_csv_registry_businnes_contacts_job.rb index fd5937488..bc60200b8 100644 --- a/app/jobs/scan_csv_registry_businnes_contacts_job.rb +++ b/app/jobs/scan_csv_registry_businnes_contacts_job.rb @@ -1,19 +1,17 @@ class ScanCsvRegistryBusinnesContactsJob < ApplicationJob - FILE_NAME = './ettevotja_rekvisiidid_init.csv'.freeze - - def perform + def perform(filename) BusinessRegistryContact.delete_all - return p 'File not exist!' unless File.exist?(FILE_NAME) + return p 'File not exist!' unless File.exist?(filename) - enumurate_csv_file + enumurate_csv_file(filename) end private - def enumurate_csv_file + def enumurate_csv_file(filename) i = 0 - CSV.foreach(FILE_NAME, headers: true, col_sep: ';') do |row| + CSV.foreach(filename, headers: true, col_sep: ';') do |row| record = BusinessRegistryContact.create( name: row[0], registry_code: row[1], diff --git a/lib/tasks/collect_invalid_validation_business_contacts.rake b/lib/tasks/collect_invalid_validation_business_contacts.rake new file mode 100644 index 000000000..ce735816e --- /dev/null +++ b/lib/tasks/collect_invalid_validation_business_contacts.rake @@ -0,0 +1,78 @@ +namespace :collect_invalid_contacts do + desc 'Starts collect invalid validation contacts' + task all_domains: :environment do + # prepare_csv_file + + Contact.all.each do |contact| + # email = convert_to_unicode(contact.email) + # result = Truemail.validate(email, with: :mx) + + # collect_data_for_csv(contact, result.result) unless result.result.success + end + end +end + +# def find_related_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 +# 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 + +# 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 diff --git a/lib/tasks/scan_csv_registry_business_contacts.rake b/lib/tasks/scan_csv_registry_business_contacts.rake index 4d481129e..c6a57e9b1 100644 --- a/lib/tasks/scan_csv_registry_business_contacts.rake +++ b/lib/tasks/scan_csv_registry_business_contacts.rake @@ -1,7 +1,9 @@ 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_now + ScanCsvRegistryBusinnesContactsJob.perform_later(FILE_NAME) end end diff --git a/test/fixtures/files/ette.csv b/test/fixtures/files/ette.csv new file mode 100644 index 000000000..fb57b478d --- /dev/null +++ b/test/fixtures/files/ette.csv @@ -0,0 +1,10 @@ +nimi;ariregistri_kood;ettevotja_oiguslik_vorm;ettevotja_oigusliku_vormi_alaliik;kmkr_nr;ettevotja_staatus;ettevotja_staatus_tekstina;ettevotja_esmakande_kpv;ettevotja_aadress;asukoht_ettevotja_aadressis;asukoha_ehak_kood;asukoha_ehak_tekstina;indeks_ettevotja_aadressis;ads_adr_id;ads_ads_oid;ads_normaliseeritud_taisaadress;teabesysteemi_link +001 group OÜ;12754230;Osaühing;;;R;Registrisse kantud;17.11.2014;;Õismäe tee 78-9;0176;Haabersti linnaosa, Tallinn, Harju maakond;13513;2182337;;Harju maakond, Tallinn, Haabersti linnaosa, Õismäe tee 78-9;https://ariregister.rik.ee/ettevotja.py?ark=12754230&ref=rekvisiidid +001 Kinnisvara OÜ;12652512;Osaühing;;EE101721589;R;Registrisse kantud;25.04.2014;;Õismäe tee 78-9;0176;Haabersti linnaosa, Tallinn, Harju maakond;13513;2182337;;Harju maakond, Tallinn, Haabersti linnaosa, Õismäe tee 78-9;https://ariregister.rik.ee/ettevotja.py?ark=12652512&ref=rekvisiidid +007 Autohaus osaühing;11694365;Osaühing;;EE101335276;R;Registrisse kantud;30.07.2009;;;;;;;;;https://ariregister.rik.ee/ettevotja.py?ark=11694365&ref=rekvisiidid +013 investment OÜ;12937781;Osaühing;;;R;Registrisse kantud;29.10.2015;;Tartu mnt 18;0298;Kesklinna linnaosa, Tallinn, Harju maakond;10145;2311081;;Harju maakond, Tallinn, Kesklinna linnaosa, Tartu mnt 18;https://ariregister.rik.ee/ettevotja.py?ark=12937781&ref=rekvisiidid +01Arvutiabi OÜ;14112620;Osaühing;;;R;Registrisse kantud;13.09.2016;;Aru tn 19-5;0614;Põhja-Tallinna linnaosa, Tallinn, Harju maakond;10318;2283769;;Harju maakond, Tallinn, Põhja-Tallinna linnaosa, Aru tn 19-5;https://ariregister.rik.ee/ettevotja.py?ark=14112620&ref=rekvisiidid +01 Creations Osaühing;10818150;Osaühing;;;R;Registrisse kantud;21.11.2001;;Ahtri tn 12;0298;Kesklinna linnaosa, Tallinn, Harju maakond;10151;2113048;;Harju maakond, Tallinn, Kesklinna linnaosa, Ahtri tn 12;https://ariregister.rik.ee/ettevotja.py?ark=10818150&ref=rekvisiidid +020 EHITUS OÜ;16035029;Osaühing;;EE102307287;R;Registrisse kantud;24.08.2020;;Harju maakond, Tallinn, Kristiine linnaosa, A. H. Tammsaare tee 47;0339;Kristiine linnaosa, Tallinn, Harju maakond;11316;2216417;;Harju maakond, Tallinn, Kristiine linnaosa, A. H. Tammsaare tee 47;https://ariregister.rik.ee/ettevotja.py?ark=16035029&ref=rekvisiidid +02JDM OÜ;16240491;Osaühing;;;R;Registrisse kantud;28.05.2021;;Mustamäe tee 106-20;0482;Mustamäe linnaosa, Tallinn, Harju maakond;12917;2311996;;Harju maakond, Tallinn, Mustamäe linnaosa, Mustamäe tee 106-20;https://ariregister.rik.ee/ettevotja.py?ark=16240491&ref=rekvisiidid +0dav riie OÜ;14288602;Osaühing;;;R;Registrisse kantud;04.07.2017;;Vanaaseme;2087;Ingliste küla, Kehtna vald, Rapla maakond;79004;3201213;;Rapla maakond, Kehtna vald, Ingliste küla, Vanaaseme;https://ariregister.rik.ee/ettevotja.py?ark=14288602&ref=rekvisiidid diff --git a/test/jobs/scan_csv_registry_businnes_contacts_job_test.rb b/test/jobs/scan_csv_registry_businnes_contacts_job_test.rb new file mode 100644 index 000000000..b16f1746c --- /dev/null +++ b/test/jobs/scan_csv_registry_businnes_contacts_job_test.rb @@ -0,0 +1,11 @@ +require 'test_helper' + +class ScanCsvRegistryBusinnesContactsJobTest < ActiveJob::TestCase + def test_delivers_email + filename = 'test/fixtures/files/ette.csv' + + assert_performed_jobs 1 do + ScanCsvRegistryBusinnesContactsJob.perform_later(filename) + end + end +end From 8837252a4636631d06298ad972e22c2cbab97d7e Mon Sep 17 00:00:00 2001 From: Oleg Hasjanov Date: Thu, 17 Jun 2021 14:38:49 +0300 Subject: [PATCH 4/5] implement scan valid org contacts --- ...scan_csv_registry_businnes_contacts_job.rb | 9 +- ..._invalid_validation_business_contacts.rake | 114 ++++++++---------- .../collect_invalid_validation_contacts.rake | 2 +- .../scan_csv_registry_business_contacts.rake | 4 +- 4 files changed, 56 insertions(+), 73 deletions(-) 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 From 5f16b6df19b4cfe6b0f4829254bb3dc20141cf5c Mon Sep 17 00:00:00 2001 From: Oleg Hasjanov Date: Fri, 18 Jun 2021 09:35:04 +0300 Subject: [PATCH 5/5] added force delete filter --- .../collect_invalid_validation_business_contacts.rake | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/lib/tasks/collect_invalid_validation_business_contacts.rake b/lib/tasks/collect_invalid_validation_business_contacts.rake index c6102aec1..04a3b6382 100644 --- a/lib/tasks/collect_invalid_validation_business_contacts.rake +++ b/lib/tasks/collect_invalid_validation_business_contacts.rake @@ -24,8 +24,7 @@ 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 = 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] @@ -34,6 +33,12 @@ def magic_with_contacts(contacts) end 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)