mirror of
https://gitlink.org.cn/Gitlink/forgeplus.git
synced 2026-05-10 23:09:51 +08:00
init project
This commit is contained in:
44
app/queries/admins/course_query.rb
Normal file
44
app/queries/admins/course_query.rb
Normal file
@@ -0,0 +1,44 @@
|
||||
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 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
|
||||
Reference in New Issue
Block a user