Sha256: 460a8d8758fac34784e1f4620f9945d84c1218e0f2b53be97a7750b688c8b0ce

Contents?: true

Size: 1.35 KB

Versions: 2

Compression:

Stored size: 1.35 KB

Contents

class Agilibox::SmallData::FilterStrategyByTimePeriod < ::Agilibox::SmallData::FilterStrategyByKeyValue
  def apply(query, value) # rubocop:disable Metrics/MethodLength
    value = value.to_s

    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

    column = key.is_a?(Symbol) ? "#{query.model.table_name}.#{key}" : key.to_s

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

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
agilibox-1.1.0 app/filters/agilibox/small_data/filter_strategy_by_time_period.rb
agilibox-1.0.15 app/filters/agilibox/small_data/filter_strategy_by_time_period.rb