diff --git a/app/controllers/api/v1/registrant/domains_controller.rb b/app/controllers/api/v1/registrant/domains_controller.rb index c10789d76..0e380eb57 100644 --- a/app/controllers/api/v1/registrant/domains_controller.rb +++ b/app/controllers/api/v1/registrant/domains_controller.rb @@ -44,7 +44,7 @@ module Api def current_user_domains current_registrant_user.domains(admin: params[:tech] != 'true') rescue CompanyRegister::NotAvailableError - current_registrant_user.direct_domains + current_registrant_user.direct_domains(admin: params[:tech] != 'true') end end end diff --git a/app/models/domain.rb b/app/models/domain.rb index 6837e6905..f2019dcb2 100644 --- a/app/models/domain.rb +++ b/app/models/domain.rb @@ -207,6 +207,14 @@ class Domain < ApplicationRecord ) end + def registrant_user_direct_admin_registrant_domains(registrant_user) + from( + "(#{registrant_user_direct_domains_by_registrant(registrant_user).to_sql} UNION " \ + "#{registrant_user_direct_domains_by_contact(registrant_user, + except_tech: true).to_sql}) AS domains" + ) + end + def registrant_user_domains(registrant_user) from( "(#{registrant_user_domains_by_registrant(registrant_user).to_sql} UNION " \ @@ -256,8 +264,10 @@ class Domain < ApplicationRecord where(registrant: registrant_user.direct_contacts) end - def registrant_user_direct_domains_by_contact(registrant_user) - joins(:domain_contacts).where(domain_contacts: { contact_id: registrant_user.direct_contacts }) + def registrant_user_direct_domains_by_contact(registrant_user, except_tech: false) + request = { contact_id: registrant_user.direct_contacts } + request[:type] = [AdminDomainContact.name] if except_tech + joins(:domain_contacts).where(domain_contacts: request) end def registrant_user_company_registrant(companies) diff --git a/app/models/registrant_user.rb b/app/models/registrant_user.rb index 92a9c61ef..efcb08288 100644 --- a/app/models/registrant_user.rb +++ b/app/models/registrant_user.rb @@ -36,7 +36,9 @@ class RegistrantUser < User Domain.registrant_user_domains(self) end - def direct_domains + def direct_domains(admin: false) + return Domain.registrant_user_direct_admin_registrant_domains(self) if admin + Domain.registrant_user_direct_domains(self) end