class ExportExercisesService
  include ExercisesHelper
  include StudentWorksHelper
  attr_reader :exercise, :ex_users, :request_url

  def initialize(exercise, ex_users, request_url)
    @exercise = exercise
    @ex_users = ex_users
    @request_url = request_url
  end

  def filename
    exercise_export_name = "学生答题_#{exercise&.course&.name}_#{exercise.exercise_name}_#{Time.now.strftime('%Y%m%d_%H%M%S')}"
    "#{exercise_export_name.strip}.zip"
  end

  def ex_zip
    zip_file = Tempfile.new(filename)
    pdfs = []
    Zip::File.open(zip_file.path, Zip::File::CREATE) do |zip|
      ex_users.each do |ex_user|
        export = ExerciseUserPdfService.new(exercise, ex_user,@request_url)
        pdf = export.ex_pdf
        pdfs << pdf
        begin
          zip.add(export.filename, pdf.path)
        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