class Admin::Legacy::Discipline::StudentsController < Admin::Legacy::Discipline::Controller
  def index
    data = students.map do |id, first_name, last_name, grade|
      first_name, last_name = encode_strings_to_utf8([first_name, last_name])
      {
        id: id,
        full_name: "#{last_name}, #{first_name}",
        grade_label: grade_levels[grade],
        grade: grade,
        points: point_count[id] || 0,
        detentions: detention_count[id] || 0
      }
    end

    render_success :ok, json: data
  end

  private
    def students
      current_school.students
        .by_grade(params[:grade])
        .by_classroom(params[:classroom_ids])
        .current_status(current_school, params[:status]&.to_sym)
        .pluck(:id, :first_name, :last_name, :grade)
    end

    def detention_count
      @detention_count ||= current_school.discipline_student_detentions.group(:student_id).count
    end

    def point_count
      @point_count ||= current_school.discipline_student_logs.group(:student_id).sum(:points)
    end
end
