|
- class Admins::SubjectAuthorizationsController < Admins::BaseController
- def index
- params[:status] ||= 'pending'
-
- applies = ApplyAction.where(container_type: 'ApplySubject')
-
- status =
- case params[:status]
- when 'pending' then 0
- when 'processed' then [1, 2]
- when 'agreed' then 1
- when 'refused' then 2
- else 0
- end
- applies = applies.where(status: status) if status.present?
-
- # 关键字模糊查询
- keyword = params[:keyword].to_s.strip
- if keyword.present?
- applies = applies.joins('JOIN subjects ON subjects.id = apply_actions.container_id')
- .where('subjects.name LIKE :keyword', keyword: "%#{keyword}%")
- end
-
- applies = applies.order(updated_at: :desc)
-
- @applies = paginate applies.includes(user: :user_extension)
-
- subject_ids = @applies.map(&:container_id)
- @subject_map = Subject.where(id: subject_ids).each_with_object({}) { |s, h| h[s.id] = s }
- @challenge_count_map = Challenge.joins(shixun: :stage_shixuns).where(st: 0, stage_shixuns: { subject_id: subject_ids}).group('subject_id').count
- end
-
- def agree
- Admins::SubjectAuths::AgreeApplyService.call(current_apply, current_user)
- render_success_js
- end
-
- def refuse
- Admins::SubjectAuths::RefuseApplyService.call(current_apply, current_user, params)
-
- render_success_js
- end
-
- private
-
- def current_apply
- @_current_apply ||= ApplyAction.where(container_type: 'ApplySubject').find(params[:id])
- end
- end
|