|
- class Admins::CourseQuery < ApplicationQuery
- include CustomSortable
-
- attr_reader :params
-
- sort_columns :created_at, default_by: :created_at, default_direction: :desc, default_table: 'courses'
-
- def initialize(params)
- @params = params
- end
-
- def call
- courses = Course.all
-
- courses = courses.where(id: params[:id]) if params[:id].present?
-
- # 状态过滤
- status =
- case params[:status].to_s.strip
- when 'processing' then 0
- when 'ended' then 1
- end
- courses = courses.where(is_end: status) if status
-
- # 单位
- if params[:school_id].present?
- courses = courses.where(school_id: params[:school_id])
- end
-
- # 首页展示
- if params[:homepage_show].present? && params[:homepage_show].to_s == 'true'
- courses = courses.where(homepage_show: true)
- end
-
- # 关键字
- keyword = params[:keyword].to_s.strip
- if keyword
- sql = 'CONCAT(lastname, firstname) LIKE :keyword OR users.nickname LIKE :keyword OR courses.name LIKE :keyword OR course_lists.name LIKE :keyword'
- courses = courses.joins(:teacher, :course_list).where(sql, keyword: "%#{keyword}%")
- end
-
- custom_sort(courses, params[:sort_by], params[:sort_direction])
- end
- end
|