summaryrefslogtreecommitdiff
path: root/app/finders/issuables/crm_contact_filter.rb
blob: bea5f7d2bfab9c8d9fb6ffd9dde79fb9f7b87882 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
# frozen_string_literal: true

module Issuables
  class CrmContactFilter < BaseFilter
    def filter(issuables)
      by_crm_contact(issuables)
    end

    # rubocop: disable CodeReuse/ActiveRecord
    def by_crm_contact(issuables)
      return issuables if params[:crm_contact_id].blank?

      condition = CustomerRelations::IssueContact
        .where(contact_id: params[:crm_contact_id])
        .where(Arel.sql("issue_id = issues.id"))
      issuables.where(condition.arel.exists)
    end
    # rubocop: enable CodeReuse/ActiveRecord
  end
end