33 lines
1.6 KiB
Ruby
33 lines
1.6 KiB
Ruby
class JamRuby::LessonSession
|
|
ransacker :student_full_name, formatter: proc { |v| v.mb_chars.downcase.to_s } do |parent|
|
|
Arel::Nodes::NamedFunction.new('LOWER',
|
|
[Arel::Nodes::NamedFunction.new('concat_ws',
|
|
[Arel::Nodes::SqlLiteral.new("' '"), User.arel_table[:first_name], User.arel_table[:last_name]])])
|
|
end
|
|
|
|
ransacker :teacher_full_name, formatter: proc { |v| v.mb_chars.downcase.to_s } do |parent|
|
|
Arel::Nodes::NamedFunction.new('LOWER',
|
|
[Arel::Nodes::NamedFunction.new('concat_ws',
|
|
[Arel::Nodes::SqlLiteral.new("' '"), 'teachers.first_name', 'teachers.last_name'])])
|
|
end
|
|
|
|
ransacker :by_search_teacher,
|
|
formatter: proc { |teacher_name|
|
|
ilikey = "%#{teacher_name}%"
|
|
results = LessonSession.joins(:teacher).where('(users.email ilike ?) OR (LOWER(concat_ws(\' \', "users"."first_name", "users"."last_name")) ilike ?)', ilikey, ilikey).map(&:id)
|
|
results = results.present? ? results : nil
|
|
}, splat_params: true do |parent|
|
|
parent.table[:id]
|
|
end
|
|
|
|
ransacker :by_lesson_package_type,
|
|
formatter: proc { |lesson_package_type_id|
|
|
results = LessonSession.joins(:lesson_booking => [:posa_card]).where('posa_cards.lesson_package_type_id = ? ', lesson_package_type_id).map(&:id)
|
|
results = results.present? ? results : nil
|
|
}, splat_params: true do |parent|
|
|
parent.table[:id]
|
|
|
|
end
|
|
end
|
|
|