class Student::Legacy::GradePostingsController < Student::Controller
  def index
    data = if current_user.family.account_holds.empty?
      grade_postings.map { |g| grade_props(g) }
    else
      []
    end

    render_success :ok, json: data
  end

  private
    def grade_postings
      current_student.class_grade_postings
        .includes(:subject, :classroom)
        .joins(:classroom)
        .by_quarter(params[:quarter])
        .with_viewable_grades
        .by_parent_viewable(current_student.id)
    end

    def grade_props(grade)
      {}.tap do |props|
        props[:id] = grade.id
        props[:quarter] = grade.quarter
        props[:number] = grade.number
        props[:letter] = grade.letter_grade
        props[:subject] = grade.subject&.name
        props[:subject_id] = grade.subject&.id
        props[:classroom] = classroom_props(grade.classroom)
      end
    end

    def classroom_props(classroom)
      {}.tap do |props|
        props[:id] = classroom.id
        props[:name] = classroom.name
        props[:viewable_grades] = classroom.viewable_grades?
        props[:parent_viewable] = classroom.parent_viewable?
      end
    end
end
