class Reporting::Service::StudentRecordsJob < Reporting::Job
  include DateRangeHelper

  def process
    create_tmp_file
    create_pdf
    students.each do |student|
      next if logs[student.id].blank?

      file = Pdf::Service::StudentRecordService.call(student, logs[student.id])
      @pdf << CombinePDF.load(file.path)
    end

    save_pdf
    @filename = "service_student_records_#{timestamp}.pdf"
    save_to_user
    send_report
  end

  private
    def students
      @school.students
        .by_id(@params['student_ids'])
        .current_status(@school, :current)
        .by_grade(@params['grades'])
        .by_classroom(@params['classrooms'])
    end

    def logs
      @school.service_student_logs
        .by_date_range(date_range(@params['dates']))
        .by_student_ids(students.pluck(:id))
        .decorate
        .group_by(&:student_id)
    end
end
