class Student::Legacy::ClassroomsController < Student::Controller
  def index
    data = classrooms
      .includes(:class_subjects, :primary_teacher)
      .by_parent_viewable(true)
      .by_semester(current_school, params[:semester])
      .by_quarter(current_school, params[:quarter])
      .ordered
      .distinct

    render_success :ok, json: data.map { |c| classroom_props(c) }
  end

  def show
    render_success :ok, json: classroom_props(classroom)
  end

  private
    def classrooms
      current_student.classrooms
    end

    def classroom
      @classroom ||= classrooms.find_by(id: params[:id])
    end

    def subject_props(subject)
      {
        id: subject.id,
        name: subject.name
      }
    end

    def classroom_props(classroom)
      {}.tap do |props|
        props[:id] = classroom.id
        props[:name] = classroom.name
        props[:parent_access] = classroom.parent_access
        props[:parent_viewable] = classroom.parent_viewable
        props[:section] = classroom.section
        props[:type] = classroom.type
        props[:subjects] = classroom.class_subjects&.map { |s| subject_props(s) }
        props[:teacher] = classroom.primary_teacher&.full_name(:reverse)
        props[:viewable_grades] = classroom.viewable_grades?
      end
    end
end
