class OneRoster::Teachers::ClassesController < OneRoster::Controller
  include OneRoster::ClassroomScoped

  before_action :authorize_roster_scope
  before_action :validate_school_id, only: :index
  after_action :set_total_count_header, only: :index

  def index
    render_success :ok, json: { classes: bind_and_parse(classrooms.map { |c| classroom_props(c) }) }
  end

  private
    def classrooms
      user_id = decode_source_id(params[:teacher_id])['id'].to_i

      @classrooms ||= current_school.classrooms
        .by_user(user_id)
        .by_type([:day_long, :period_long, :general])
        .joins(:course)
    end

    def set_total_count_header
      response.set_header('X-Total-Count', classrooms.count.to_s)
    end
end
