class Admins::ShixunsController < Admins::BaseController def index params[:sort_by] = params[:sort_by].presence || 'created_on' params[:sort_direction] = params[:sort_direction].presence || 'desc' shixuns = Admins::ShixunQuery.call(params) @editing_shixuns = shixuns.where(status:0).size @pending_shixuns = shixuns.where(status:1).size @processed_shixuns = shixuns.where(status:2).size @closed_shixuns = shixuns.where(status:3).size @shixuns_type_check = MirrorRepository.pluck(:type_name,:id) @params_page = params[:page] || 1 @shixuns = paginate shixuns.preload(:user,:challenges) respond_to do |format| format.js format.html format.xls{ filename = "实训详情_#{Time.now.strftime('%Y-%m-%d %H:%M:%S')}.xls" send_data(shixun_list_xls(shixuns), :type => 'application/octet-stream', :filename => filename_for_content_disposition(filename)) } end end def destroy Shixun.find(params[:id]).destroy! render_delete_success end private def shixun_list_xls shixuns xls_report = StringIO.new book = Spreadsheet::Workbook.new sheet1 = book.create_worksheet :name => "sheet" blue = Spreadsheet::Format.new :color => :blue, :weight => :bold, :size => 10 sheet1.row(0).default_format = blue sheet1.row(0).concat(["实训ID","实训名称","技术平台", "Fork源", "实践任务","选择题任务","挑战人数", "通关人数", "状态","创建者", "单位", "职业", "关卡序号","关卡名称","技能标签"]) count_row = 1 shixuns.find_each do |shixun| sheet1[count_row, 0] = shixun.identifier sheet1[count_row, 1] = shixun.name sheet1[count_row, 2] = shixun.shixun_main_name sheet1[count_row, 3] = shixun.fork_identifier sheet1[count_row, 4] = shixun.challenges.practice_type.count sheet1[count_row, 5] = shixun.challenges.choose_type.count sheet1[count_row, 6] = shixun.myshixuns.count sheet1[count_row, 7] = shixun.myshixuns.finished.count sheet1[count_row, 8] = shixun.shixun_status sheet1[count_row, 9] = shixun.owner.show_real_name sheet1[count_row, 10] = shixun.owner.school_name sheet1[count_row, 11] = shixun.owner.identity shixun.challenges.each do |challenge| sheet1[count_row, 12] = "第#{challenge.position}关" sheet1[count_row, 13] = challenge.subject sheet1[count_row, 14] = challenge.tags_show count_row += 1 end count_row += 1 end book.write xls_report xls_report.string end end