module UcbRailsUser::UserSearch

  def self.find_users_by_name(name)
    return [] unless name.present?
    (name1, name2) = name
      .downcase
      .split
      .take(2)
      .reject { |n| n.blank? }
      .map { |n| "#{n}%" }
    query =
      if name1.present? && name2.present?
        User.where("LOWER(first_name) LIKE ? AND LOWER(last_name) LIKE ?", name1, name2)
          .or(User.where("LOWER(last_name) LIKE ? AND LOWER(first_name) LIKE ?", name1, name2))
      else
        User.where("LOWER(first_name) LIKE ? OR LOWER(last_name) LIKE ?", name1, name1)
      end
    query.order(:last_name, :first_name)
  end

end
