Class: QuickSearch::ContactPointEmailQuickSearch
- Inherits:
-
BaseQuickSearch
- Object
- BaseQuickSearch
- QuickSearch::ContactPointEmailQuickSearch
- 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
- .domain_scan(term) ⇒ Object
-
.exclude_domains ⇒ Object
Domains excluded from email domain-based searches.
- .skip_domain?(domain) ⇒ Boolean
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_domains ⇒ Object
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
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 |