|
- class Admins::CustomerQuery < ApplicationQuery
- include CustomSortable
-
- attr_reader :params
-
- sort_columns :created_at, default_by: :created_at, default_direction: :desc, default_table: 'customers'
-
- def initialize(params)
- @params = params
- end
-
- def call
- customers = Customer.all
-
- if params[:partner_id].present?
- customers = customers.joins(:partner_customers).where(partner_customers: { partner_id: params[:partner_id] })
- end
-
- keyword = params[:keyword].to_s.strip
- customers = customers.joins(:school).where('schools.name LIKE ?', "%#{keyword}%") if keyword.present?
-
- custom_sort(customers, params[:sort_by], params[:sort_direction])
- end
- end
|