Sha256: f70a99f2a6d92caabf466c4c2e2369279e8331f73a8a2153aa703a6b2ba5192b

Contents?: true

Size: 1.25 KB

Versions: 10

Compression:

Stored size: 1.25 KB

Contents

class Agilibox::SmallData::FilterStrategyByTimePeriod < ::Agilibox::SmallData::FilterStrategyByKeyValue
  def apply(query, value)
    if value == "today"
      a = Time.zone.now.beginning_of_day
      b = Time.zone.now.end_of_day
    elsif value == "yesterday"
      a = (Time.zone.now - 1.day).beginning_of_day
      b = (Time.zone.now - 1.day).end_of_day
    elsif value == "this_week"
      a = Time.zone.now.beginning_of_week
      b = Time.zone.now.end_of_week
    elsif value == "this_month"
      a = Time.zone.now.beginning_of_month
      b = Time.zone.now.end_of_month
    elsif value == "this_year"
      a = Time.zone.now.beginning_of_year
      b = Time.zone.now.end_of_year
    elsif value == "last_week"
      a = (Time.zone.now - 1.week).beginning_of_week
      b = (Time.zone.now - 1.week).end_of_week
    elsif value == "last_month"
      a = (Time.zone.now - 1.month).beginning_of_month
      b = (Time.zone.now - 1.month).end_of_month
    elsif value == "last_year"
      a = (Time.zone.now - 1.year).beginning_of_year
      b = (Time.zone.now - 1.year).end_of_year
    else
      return query
    end

    criteria = "#{query.model.table_name}.#{key}"

    query
      .where("#{criteria} >= ?", a.to_date)
      .where("#{criteria} <= ?", b.to_date)
  end
end

Version data entries

10 entries across 10 versions & 1 rubygems

Version Path
agilibox-1.0.9 app/filters/agilibox/small_data/filter_strategy_by_time_period.rb
agilibox-1.0.8 app/filters/agilibox/small_data/filter_strategy_by_time_period.rb
agilibox-1.0.7 app/filters/agilibox/small_data/filter_strategy_by_time_period.rb
agilibox-1.0.6 app/filters/agilibox/small_data/filter_strategy_by_time_period.rb
agilibox-1.0.5 app/filters/agilibox/small_data/filter_strategy_by_time_period.rb
agilibox-1.0.4 app/filters/agilibox/small_data/filter_strategy_by_time_period.rb
agilibox-1.0.3 app/filters/agilibox/small_data/filter_strategy_by_time_period.rb
agilibox-1.0.2 app/filters/agilibox/small_data/filter_strategy_by_time_period.rb
agilibox-1.0.1 app/filters/agilibox/small_data/filter_strategy_by_time_period.rb
agilibox-1.0.0 app/filters/agilibox/small_data/filter_strategy_by_time_period.rb