Sha256: 8529af546d6167725255327ce80366e4ca2fd8573e96f363161e2a4ba25adaa3

Contents?: true

Size: 960 Bytes

Versions: 11

Compression:

Stored size: 960 Bytes

Contents

require_relative '../filter_decorator.rb'

class Field_filter_decorator < Filter_decorator
  def initialize(filter, field, value)
    super(filter)
    self.field = field
    self.value = value.strip.downcase
  end

  def apply(filtering_obj)
    if filtering_obj.is_a?(Array)
      super(filtering_obj).select do |student|
        student_value = student.send(self.field).to_s.downcase
        if self.value.nil? || self.value.empty?
          !student_value.nil? && !student_value.empty?
        else
          student_value.include?(self.value)
        end
      end
    else
      query = super(filtering_obj)
      condition = query.include?("WHERE") ? "AND" : "WHERE"
      if self.value.nil? || self.value.empty?
        "#{query} #{condition} (#{self.field} IS NOT NULL AND #{self.field} != '')"
      else
        "#{query} #{condition} #{self.field} LIKE '%#{self.value}%'"
      end
      
    end
  end

  private
  attr_accessor :field, :value
end

Version data entries

11 entries across 11 versions & 1 rubygems

Version Path
student_mvp-0.1.10 lib/models/filter/student_filters/field_filter_decorator.rb
student_mvp-0.1.9 lib/models/filter/student_filters/field_filter_decorator.rb
student_mvp-0.1.8 lib/models/filter/student_filters/field_filter_decorator.rb
student_mvp-0.1.7 lib/models/filter/student_filters/field_filter_decorator.rb
student_mvp-0.1.6 lib/models/filter/student_filters/field_filter_decorator.rb
student_mvp-0.1.5 lib/models/filter/student_filters/field_filter_decorator.rb
student_mvp-0.1.4 lib/models/filter/student_filters/field_filter_decorator.rb
student_mvp-0.1.3 lib/models/filter/student_filters/field_filter_decorator.rb
student_mvp-0.1.2 lib/models/filter/student_filters/field_filter_decorator.rb
student_mvp-0.1.1 lib/models/filter/student_filters/field_filter_decorator.rb
student_mvp-0.1.0 lib/models/filter/student_filters/field_filter_decorator.rb