class Admin::Course::StatesController < Admin::Course::Controller
  def index
    render_success :ok, json: state_descriptors.map { |d| descriptor_props(d) }
  end

  private
    def state_descriptors
      descriptor_service(:courses, 'educationOrganizationId', '1088000000')
    end

    def subject_descriptors
      @subject_descriptors ||= descriptor_service(:academicsubjectdescriptors)
        .map { |d| [d['codeValue'], d['shortDescription']] }
        .to_h
    end

    def descriptor_service(descriptor, query=nil, values=nil)
      EdFi::Indiana::Sandbox::DescriptorService.call(
        current_school_year.id,
        descriptor: descriptor,
        query: query,
        values: values
      )
    end

    def descriptor_props(descriptor)
      {
        id: descriptor['id'],
        title: descriptor['title'],
        code: descriptor['code'],
        subject: subject_offered(descriptor['academicSubjectDescriptor']),
        grades: grades_offered(descriptor['offeredGradeLevels'])
      }
    end

    def subject_offered(subject)
      code_value = subject.split('/').last
      subject_descriptors[code_value]
    end

    def grades_offered(grades)
      grades.map do |grade|
        grade['gradeLevelDescriptor'].split('/').last
      end.join(', ')
    end
end
