# frozen_string_literal: true

module DiscourseAi::AiBot::SiteSettingsExtension
  def self.enable_or_disable_ai_bots
    enabled_bots = SiteSetting.ai_bot_enabled_chat_bots_map
    enabled_bots = [] if !SiteSetting.ai_bot_enabled
    DiscourseAi::AiBot::EntryPoint::BOTS.each do |id, bot_name, name|
      if id == DiscourseAi::AiBot::EntryPoint::FAKE_ID
        next if Rails.env.production?
      end

      active = enabled_bots.include?(name)
      user = User.find_by(id: id)

      if active
        if !user
          user =
            User.new(
              id: id,
              email: "no_email_#{name}",
              name: bot_name.titleize,
              username: UserNameSuggester.suggest(bot_name),
              active: true,
              approved: true,
              admin: true,
              moderator: true,
              trust_level: TrustLevel[4],
            )
          user.save!(validate: false)
        else
          user.update_columns(active: true)
        end
      elsif !active && user
        # will include deleted
        has_posts = DB.query_single("SELECT 1 FROM posts WHERE user_id = #{id} LIMIT 1").present?

        if has_posts
          user.update_columns(active: false) if user.active
        else
          user.destroy
        end
      end
    end
  end
end
