-
Notifications
You must be signed in to change notification settings - Fork 19
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Update company_register gem and fix logger dependency
- Switch company_register gem to 'issues-with-upcoming-data' branch - Add concurrent-ruby 1.3.4 to fix ThreadSafeLevel logger error - Update various gem dependencies Resolves logger initialization error related to ActiveSupport::Logger::ThreadSafeLevel
- Loading branch information
1 parent
c81aed0
commit d3d91b5
Showing
3 changed files
with
117 additions
and
12 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,93 @@ | ||
class OrgRegistrantPhoneCheckerJob < ApplicationJob | ||
queue_as :default | ||
|
||
def perform(type: 'bulk', registrant_user_code: nil, spam_delay: 1 ) | ||
case type | ||
when 'bulk' | ||
execute_bulk_checker(spam_delay) | ||
when 'single' | ||
execute_single_checker(registrant_user_code) | ||
else | ||
raise "Invalid type: #{type}. Allowed types: 'bulk', 'single'" | ||
end | ||
end | ||
|
||
def execute_bulk_checker(spam_delay) | ||
log("Bulk checker started") | ||
|
||
Contact.where(ident_type: 'org', ident_country_code: 'EE').joins(:registrant_domains).each do |registrant_user| | ||
is_phone_number_matching = check_the_registrant_phone_number(registrant_user) | ||
|
||
call_disclosure_action(is_phone_number_matching, registrant_user) | ||
sleep(spam_delay) | ||
end | ||
|
||
log("Bulk checker finished") | ||
end | ||
|
||
def execute_single_checker(registrant_user_code) | ||
registrant_user = RegistrantUser.find_by(code: registrant_user_code) | ||
is_phone_number_matching = check_the_registrant_phone_number(registrant_user) | ||
|
||
call_disclosure_action(is_phone_number_matching, registrant_user) | ||
end | ||
|
||
private | ||
|
||
def call_disclosure_action(is_phone_number_matching, contact) | ||
if is_phone_number_matching | ||
disclose_phone_number(contact) | ||
log("Phone number disclosed for registrant user #{contact.code}. Phone number: #{contact.phone}") | ||
elsif contact.disclosed_attributes.include?('phone') | ||
log("Removing phone number from disclosed attributes for registrant user #{contact.code}. Phone number: #{contact.phone}") | ||
contact.disclosed_attributes.delete('phone') | ||
contact.save! | ||
else | ||
log("Phone number not disclosed for registrant user #{contact.code}. Phone number: #{contact.phone}") | ||
end | ||
end | ||
|
||
def log(message) | ||
Rails.logger.info(message) | ||
end | ||
|
||
def disclose_phone_number(contact) | ||
contact.disclosed_attributes << 'phone' | ||
contact.save! | ||
end | ||
|
||
def company_register | ||
@company_register ||= CompanyRegister::Client.new | ||
end | ||
|
||
def check_the_registrant_phone_number(registrant_user) | ||
phone_numbers = fetch_phone_number_from_company_register(registrant_user.ident) | ||
|
||
# TODO: implement phone number check | ||
# If phone number is matching with registrant phone number, then return return true, else return false | ||
|
||
phone_numbers.any? do |phone_number| | ||
puts '---- business registry phone number ----' | ||
puts phone_number | ||
puts '---- registrant phone number ----' | ||
puts registrant_user.phone | ||
puts '---- format phone number ----' | ||
puts format_phone_number(phone_number) | ||
puts '---- format registrant phone number ----' | ||
puts format_phone_number(registrant_user.phone) | ||
|
||
format_phone_number(phone_number) == format_phone_number(registrant_user.phone) | ||
end | ||
end | ||
|
||
def format_phone_number(phone_number) | ||
# phone number from business registry is "+3725655662" | ||
# we need to format it to "+3725655662" | ||
phone_number.gsub(/\D/, '') | ||
end | ||
|
||
def fetch_phone_number_from_company_register(company_code) | ||
data = company_register.company_details(registration_number: company_code.to_s) | ||
data[0].phone_numbers | ||
end | ||
end |