class OneRoster::TermsController < OneRoster::Controller
  include OneRoster::AcademicSessionScoped

  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: { academicSessions: session_terms }
  end

  def show
    render_success :ok, json: { academicSession: session_terms }
  end

  private
    def session_terms
      if action_name.to_sym == :show
        decoded = decode_session_source
        return {} unless decoded[:type] == 'term'

        term_props(decoded[:session], decoded[:name], decoded[:year])
      else
        academic_sessions.select { |k| k[:type] == 'term' }
      end
    end

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