class Csv::Covid::TemperatureCsv < Csv::ApplicationService
  include DateRangeHelper

  def initialize(school, date_range, grades, classroom_ids)
    @school = school
    @date_range = datetime_range(date_range)
    @grades = grades
    @classroom_ids = classroom_ids
  end

  def call
    CSV.generate do |csv|
      csv << headers
      temperatures.each do |temperature|
        csv << [
          temperature.decorate.recorded_datetime,
          temperature.student.first_name,
          temperature.student.last_name,
          temperature.student.decorate.grade_level,
          temperature.temperature,
          temperature.recorded_by
        ]
      end
    end
  end

  private
    def temperatures
      @school.covid_temperatures
        .includes(:student)
        .by_date_range(@date_range)
        .by_grades(@grades)
        .by_classroom(@classroom_ids)
    end

    def headers
      [
        'Date/Time',
        'First Name',
        'Last Name',
        'Grade',
        'Temperature',
        'Recorded by'
      ]
    end
end
