module EdFi::IndianaHelper
  NAMESPACES = {
    'ed-fi' => [
      :academic_subject_descriptors,
      :accommodation_descriptors,
      :achievement_category_descriptors,
      :address_type_descriptors,
      :attendance_event_category_descriptors,
      :calendar_event_descriptors,
      :calendar_type_descriptors,
      :classroom_position_descriptors,
      :country_descriptors,
      :course_attempt_result_descriptors,
      :credit_type_descriptors,
      :diploma_level_descriptors,
      :diploma_type_descriptors,
      :disability_descriptors,
      :employment_status_descriptors,
      :exit_withdraw_type_descriptors,
      :grade_level_descriptors,
      :grading_period_descriptors,
      :language_descriptors,
      :limited_english_proficiency_descriptors,
      :medium_of_instruction_descriptors,
      :method_credit_earned_descriptors,
      :program_type_descriptors,
      :race_descriptors,
      :reason_exited_descriptors,
      :recognition_type_descriptors,
      :responsibility_descriptors,
      :sex_descriptors,
      :staff_classification_descriptors,
      :staff_identification_system_descriptors,
      :state_abbreviation_descriptors,
      :term_descriptors
    ],
    'idoe' => [
      :assessment_accommodations,
      :ell_instrument_descriptors
    ]
  }

  # Return the correct namespace for the given descriptor: ed-fi / idoe
  def namespace(descriptor)
    NAMESPACES.each { |n, d| return n if d.include?(descriptor.underscore.to_sym) }

    'ed-fi'
  end

  def descriptor_service(school_year_id, options)
    school_year = SchoolYear.find_by(id: school_year_id)
    environment = school_year.school.find_or_build_ed_fi_indiana_environment.environment_service
    dir = "#{environment}::DescriptorService"

    dir.constantize.call(school_year_id, options)
  end
end
