class Reporting::Admissions::ApplicantApplicationJob < Reporting::Job
  def process
    create_tmp_file
    create_pdf
    applicants.each do |applicant|
      applicant.migrate_pdf

      if preapplicant
        file = Pdf::Admissions::SubmittedApplicationService.call(applicant)
      elsif applicant.submitted_application.attached?
        file = Tempfile.new
        file.binmode
        applicant.submitted_application.download { |c| file.write(c) }
      else
        next
      end

      @pdf << CombinePDF.load(file.path)
    end

    save_pdf
    area = preapplicant ? 'preapplicant' : 'applicant'
    @filename = "admission_#{area}_application_#{timestamp}.pdf"
    save_to_user
    send_report
  end

  private
    def applicants
      @school.admission_applicants.where(id: @params['ids']).ordered
    end

    def preapplicant
      @params['preapplicant']
    end
end
