Class: Collavre::Creatives::Filters::ProgressFilter

Inherits:
BaseFilter
  • Object
show all
Defined in:
app/services/collavre/creatives/filters/progress_filter.rb

Instance Method Summary collapse

Methods inherited from BaseFilter

#initialize

Constructor Details

This class inherits a constructor from Collavre::Creatives::Filters::BaseFilter

Instance Method Details

#active?Boolean

Returns:

  • (Boolean)


5
6
7
# File 'app/services/collavre/creatives/filters/progress_filter.rb', line 5

def active?
  params[:min_progress].present? || params[:max_progress].present?
end

#matchObject



9
10
11
12
13
14
15
16
17
18
19
20
21
# File 'app/services/collavre/creatives/filters/progress_filter.rb', line 9

def match
  min_val = params[:min_progress].presence&.to_f
  max_val = params[:max_progress].presence&.to_f

  # Linked Creatives use origin's progress, regular creatives use their own
  query = scope
    .joins("LEFT JOIN creatives origins ON creatives.origin_id = origins.id")

  effective_progress = "COALESCE(origins.progress, creatives.progress)"
  query = query.where("#{effective_progress} >= ?", min_val) if min_val
  query = query.where("#{effective_progress} <= ?", max_val) if max_val
  query.pluck("creatives.id")
end