Sha256: 08e89df37a66a1cc4c29cc7d80f913ee5875c753c77dcd6efd43a837b0befb12

Contents?: true

Size: 831 Bytes

Versions: 11

Compression:

Stored size: 831 Bytes

Contents

require_relative '../filter_decorator.rb'

class Full_name_filter_decorator < Filter_decorator
  def initialize(filter, full_name)
    super(filter)
      self.full_name = full_name.strip.downcase unless full_name.nil?
  end

  def apply(filtering_obj)
    return super(filtering_obj) if self.full_name.nil? || self.full_name.empty?

    if filtering_obj.is_a?(Array)
      super(filtering_obj).select do |student| 
        initials = "#{student.get_full_name}"
        initials.downcase.include?(self.full_name)
      end
    else
      query = super(filtering_obj)
      condition = query.include?("WHERE") ? "AND" : "WHERE"
      "#{query} #{condition} CONCAT(LOWER(first_name), ' ', LOWER(LEFT(name, 1)), '.', LOWER(LEFT(patronymic, 1)), '.') LIKE '%#{self.full_name}%'"
    end
  end

  private
  attr_accessor :full_name
end

Version data entries

11 entries across 11 versions & 1 rubygems

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