Class: QuickSearch::ContactPointEmailQuickSearch

Inherits:
BaseQuickSearch
  • Object
show all
Defined in:
app/queries/quick_search/contact_point_email_quick_search.rb

Constant Summary collapse

QS_EMAIL_REGEXP =
/^([^@\s]*@)?((?=.{1,253}\.?$)(?:(?!\-|[^.]+_)[A-Za-z0-9\-_]{1,63}(?<!-)(?:\.|$)){2,})$/i

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.domain_scan(term) ⇒ Object



14
15
16
17
18
19
# File 'app/queries/quick_search/contact_point_email_quick_search.rb', line 14

def self.domain_scan(term)
  return unless term.present?
  domain = term.scan(QS_EMAIL_REGEXP)&.flatten&.last&.strip
  domain = nil if domain && skip_domain?(domain)
  domain
end

.exclude_domainsObject

Domains excluded from email domain-based searches.
Now loaded from shared FreeEmailDomains module (data/free_email_domains.yml)



6
7
8
# File 'app/queries/quick_search/contact_point_email_quick_search.rb', line 6

def self.exclude_domains
  FreeEmailDomains.list
end

.skip_domain?(domain) ⇒ Boolean

Returns:

  • (Boolean)


35
36
37
# File 'app/queries/quick_search/contact_point_email_quick_search.rb', line 35

def self.skip_domain?(domain)
  FreeEmailDomains.include?(domain)
end

Instance Method Details

#extract_term(query) ⇒ Object



10
11
12
# File 'app/queries/quick_search/contact_point_email_quick_search.rb', line 10

def extract_term(query)
  query.scan(QS_EMAIL_REGEXP).join.strip
end

#perform_find(term, existing_results = []) ⇒ Object

term is an email



22
23
24
25
26
27
28
29
30
31
32
33
# File 'app/queries/quick_search/contact_point_email_quick_search.rb', line 22

def perform_find(term, existing_results = [])
  base_query = ContactPoint.emails.joins(:party).includes(party: :profile_image).where.not(Party[:inactive].eq(true))
  res = base_query.where(ContactPoint[:detail].matches(term))
  unless res.present?
    domain = term.scan(QS_EMAIL_REGEXP)&.flatten&.last&.strip
    domain = nil if domain && self.class.skip_domain?(domain)
    if domain
      res = base_query.contains("@#{domain}")
    end
  end
  res
end