You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
29 lines
1.0 KiB
29 lines
1.0 KiB
class Admins::HackImportsController < Admins::BaseController
|
|
|
|
def index
|
|
params[:sort_by] ||= 'created_at'
|
|
params[:sort_direction] ||= 'desc'
|
|
item_banks = Admins::ImportHackQuery.call(params)
|
|
@item_banks = paginate item_banks.preload([container: :hack_codes], :user, :sub_discipline)
|
|
end
|
|
|
|
def create
|
|
return render_error('请上传正确的文件') if params[:file].blank? || !params[:file].is_a?(ActionDispatch::Http::UploadedFile)
|
|
filename = File.basename(params[:file].original_filename, ".*")
|
|
sub_discipline = SubDiscipline.find_by(name: filename)
|
|
unless sub_discipline.present?
|
|
render_error "请先创建'#{filename}'课程后再导入题库" and return
|
|
end
|
|
|
|
result = Admins::ImportHackService.call(params[:file].to_io, sub_discipline.id)
|
|
render_ok(result)
|
|
rescue Admins::ImportHackService::Error => ex
|
|
render_error(ex)
|
|
end
|
|
|
|
def down_template
|
|
send_file(Rails.root.join("excel_template/import_hacks_template.xlsx"), filename: "OJ试题导入模版.xlsx")
|
|
end
|
|
|
|
end
|