Class: SpreeCmCommissioner::Routes::Find

Inherits:
Object
  • Object
show all
Defined in:
app/finders/spree_cm_commissioner/routes/find.rb

Instance Method Summary collapse

Constructor Details

#initialize(vendor: nil, tenant: nil, params: {}, include_route_prices: false) ⇒ Find

Returns a new instance of Find.



11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
# File 'app/finders/spree_cm_commissioner/routes/find.rb', line 11

def initialize(vendor: nil, tenant: nil, params: {}, include_route_prices: false)
  @vendor = vendor
  @tenant = tenant
  @params = params || {}
  @include_route_prices = include_route_prices

  @ids = Array(@params[:ids]).map(&:to_s)
  @name = @params.dig(:filter, :name) || @params[:name]
  @route_type = @params.dig(:filter, :route_type) || @params[:route_type]
  @origin_place_id = @params.dig(:filter, :origin_place_id)
  @destination_place_id = @params.dig(:filter, :destination_place_id)
  @query = @params.dig(:filter, :query) || @params[:query]
  @limit = (@params[:limit] || @params.dig(:page, :limit) || 50).to_i
  @order = @params[:order] || 'created_at DESC'
end

Instance Method Details

#executeObject



27
28
29
30
31
32
33
34
35
36
37
# File 'app/finders/spree_cm_commissioner/routes/find.rb', line 27

def execute
  results = base_scope
  results = by_ids(results) if ids?
  results = by_name(results) if name?
  results = by_route_type(results) if route_type?
  results = by_origin_place(results) if origin_place_id.present?
  results = by_destination_place(results) if destination_place_id.present?
  results = by_query(results) if query?

  results.order(order_clause).limit(limit)
end