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.
educoder/app/services/export_exercises_service.rb

49 lines
1.8 KiB

class ExportExercisesService
include ExercisesHelper
include StudentWorksHelper
attr_reader :exercise, :ex_users
def initialize(exercise, ex_users)
@exercise = exercise
@ex_users = ex_users
end
def filename
exercise_export_name = exercise.user.real_name + "_" + exercise.exercise_name + "_" + Time.now.strftime('%Y%m%d_%H%M%S')
"#{exercise_export_name.strip}.zip"
end
def ex_zip
Rails.logger.info("##################_______________________file_name___________11111__________###########")
zip_file = Tempfile.new(filename)
Rails.logger.info("##################_______________________file_name___________2222222__________###########")
pdfs = []
Zip::File.open(zip_file.path, Zip::File::CREATE) do |zip|
Rails.logger.info("##################_______________________file_name___________3333333__________###########")
ex_users.each do |ex_user|
export = ExerciseUserPdfService.new(exercise, ex_user)
Rails.logger.info("##################_______________________file_name___________444444__________###########")
pdf = export.ex_pdf
Rails.logger.info("##################_______________________file_name___________888888888__________###########")
pdfs << pdf
Rails.logger.info("##################_______________________file_name___________999999999__________###########")
begin
zip.add(export.filename, pdf.path)
Rails.logger.info("##################_______________________file_name___________10000000000000__________###########")
rescue => ex
Rails.logger.error(ex.message)
zip.get_output_stream('FILE_NOTICE.txt'){|os| os.write("文件重复:#{export.filename}") }
end
end
zip_file
end
end
end