diff --git a/app/models/contact.rb b/app/models/contact.rb index f07c0c114..779f24e0f 100644 --- a/app/models/contact.rb +++ b/app/models/contact.rb @@ -12,6 +12,8 @@ class Contact < ApplicationRecord belongs_to :registrar, required: true has_many :domain_contacts has_many :domains, through: :domain_contacts + has_many :admin_domains, -> { merge(DomainContact.admin) }, source: :domain, + through: :domain_contacts has_many :legal_documents, as: :documentable has_many :registrant_domains, class_name: 'Domain', foreign_key: 'registrant_id' has_many :actions, dependent: :destroy @@ -252,6 +254,16 @@ class Contact < ApplicationRecord def registrant_user_contacts(registrant_user) registrant_user_direct_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) @@ -263,11 +275,22 @@ class Contact < ApplicationRecord def registrant_user_indirect_contacts(registrant_user) ident = registrant_user.companies.collect(&:registration_number) + # ident = ['12345678'] where(ident_type: ORG, ident: ident, 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 registrar_contact_ids(indirect_contacts) + registrar_domains = indirect_contacts.map(&:registrant_domains).flatten + registrar_domains.map(&:contacts).flatten.collect(&:id) + end end def roid diff --git a/app/models/domain_contact.rb b/app/models/domain_contact.rb index 910f4e445..57446071a 100644 --- a/app/models/domain_contact.rb +++ b/app/models/domain_contact.rb @@ -6,6 +6,8 @@ class DomainContact < ApplicationRecord belongs_to :contact belongs_to :domain + scope :admin, -> { where(type: 'AdminDomainContact') } + attr_accessor :value_typeahead self.ignored_columns = %w[legacy_domain_id legacy_contact_id]