class TopicSubtype
  include ActiveModel::Serialization

  attr_accessor :id, :options

  def initialize(id, options)
    @id = id
    @options = options
  end

  def attributes
    {'id' => @id,
     'options' => @options}
  end

  def self.list
    return [] unless @archetypes.present?
    @archetypes.values
  end

  def self.user_to_user
    'user_to_user'
  end

  def self.system_message
    'system_message'
  end

  def self.moderator_warning
    'moderator_warning'
  end

  def self.notify_moderators
    'notify_moderators'
  end

  def self.notify_user
    'notify_user'
  end

  def self.register(name, options={})
    @subtypes ||= {}
    @subtypes[name] = TopicSubtype.new(name, options)
  end

  register 'user_to_user'
  register 'system_message'
  register 'moderator_warning'
  register 'notify_moderators'
  register 'notify_user'

end