Add company controlled contacts to registrant API

Fix tests.
This commit is contained in:
Alex Sherman 2020-07-15 15:11:47 +05:00
parent 735a0e1642
commit c4de5655e1
8 changed files with 45 additions and 35 deletions

View file

@ -253,17 +253,8 @@ class Contact < ApplicationRecord
def registrant_user_contacts(registrant_user)
registrant_user_direct_contacts(registrant_user)
.or(registrant_user_company_contacts(registrant_user))
.or(registrant_user_indirect_contacts(registrant_user))
# .or(registrant_user_indirect_admin_registrar_contacts(registrant_user))
end
def registrant_user_indirect_admin_registrar_contacts(registrant_user)
indirect_contacts = registrant_user_indirect_contacts(registrant_user)
admin_contact_ids = admin_contact_ids(indirect_contacts)
reg_contact_ids = registrar_contact_ids(indirect_contacts)
total_ids = (admin_contact_ids + reg_contact_ids).uniq
where(id: total_ids)
end
def registrant_user_direct_contacts(registrant_user)
@ -271,9 +262,7 @@ class Contact < ApplicationRecord
.country.alpha2)
end
private
def registrant_user_indirect_contacts(registrant_user)
def registrant_user_company_contacts(registrant_user)
ident = registrant_user.companies.collect(&:registration_number)
# ident = ['12345678']
@ -282,14 +271,13 @@ class Contact < ApplicationRecord
ident_country_code: registrant_user.country.alpha2)
end
def admin_contact_ids(indirect_contacts)
domains = indirect_contacts.map(&:admin_domains).flatten
domains.map(&:contacts).flatten.collect(&:id)
end
def registrant_user_indirect_contacts(registrant_user)
company_domains = Domain.registrant_user_indirect_domains(registrant_user)
company_contact_ids = company_domains.map(&:contacts).flatten.collect(&:id)
company_ids = Contact.registrant_user_company_contacts(registrant_user).collect(&:id)
total_ids = (company_contact_ids + company_ids).uniq
def registrar_contact_ids(indirect_contacts)
registrar_domains = indirect_contacts.map(&:registrant_domains).flatten
registrar_domains.map(&:contacts).flatten.collect(&:id)
where(id: total_ids)
end
end

View file

@ -200,6 +200,7 @@ class Domain < ApplicationRecord
def registrant_user_domains(registrant_user)
from(
"(#{registrant_user_domains_by_registrant(registrant_user).to_sql} UNION " \
"#{registrant_user_indirect_domains(registrant_user).to_sql} UNION " \
"#{registrant_user_domains_by_contact(registrant_user).to_sql}) AS domains"
)
end
@ -218,6 +219,14 @@ class Domain < ApplicationRecord
)
end
def registrant_user_indirect_domains(registrant_user)
companies = Contact.registrant_user_company_contacts(registrant_user)
from(
"(#{registrant_user_company_registrant(companies).to_sql} UNION "\
"#{registrant_user_domains_company(companies).to_sql}) AS domains"
)
end
private
def registrant_user_domains_by_registrant(registrant_user)
@ -240,6 +249,14 @@ class Domain < ApplicationRecord
def registrant_user_direct_domains_by_contact(registrant_user)
joins(:domain_contacts).where(domain_contacts: { contact_id: registrant_user.direct_contacts })
end
def registrant_user_company_registrant(companies)
where(registrant: companies)
end
def registrant_user_domains_company(companies)
joins(:domain_contacts).where(domain_contacts: { contact: companies })
end
end
def name=(value)