# frozen_string_literal: true

class FlagSettings
  attr_reader(
    :without_additional_message_types,
    :notify_types,
    :topic_flag_types,
    :auto_action_types,
    :additional_message_types,
    :names,
  )

  def initialize
    @all_flag_types = Enum.new
    @topic_flag_types = Enum.new
    @notify_types = Enum.new
    @auto_action_types = Enum.new
    @additional_message_types = Enum.new
    @without_additional_message_types = Enum.new
    @names = Enum.new
  end

  def add(
    id,
    name_key,
    topic_type: nil,
    notify_type: nil,
    auto_action_type: nil,
    require_message: nil,
    name: nil
  )
    @all_flag_types[name_key] = id
    @topic_flag_types[name_key] = id if !!topic_type
    @notify_types[name_key] = id if !!notify_type
    @auto_action_types[name_key] = id if !!auto_action_type
    @names[id] = name if name

    if !!require_message
      @additional_message_types[name_key] = id
    else
      @without_additional_message_types[name_key] = id
    end
  end

  def is_flag?(key)
    @all_flag_types.valid?(key)
  end

  def flag_types
    @all_flag_types
  end
end