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