class SlackSmartBot
  def update_openai_sessions(session_name='', team_id: '', user_name: '')
    require 'yaml'
    user_name = Thread.current[:user].name if user_name == ''
    team_id = Thread.current[:user].team_id if team_id == ''
    team_id_user = team_id + "_" + user_name

    unless Dir.exist?("#{config.path}/openai/#{team_id}")
      Dir.mkdir("#{config.path}/openai/#{team_id}")
    end

    unless Dir.exist?("#{config.path}/openai/#{team_id}/#{user_name}")
      Dir.mkdir("#{config.path}/openai/#{team_id}/#{user_name}")
    end
    file_name = File.join(config.path, "openai/#{team_id}", "o_#{user_name}.yaml")
    data = @open_ai[team_id_user].deep_copy
    if data.key?(:chat_gpt) and data[:chat_gpt].key?(:sessions)
      data[:chat_gpt][:sessions].delete('') #temporary session
    end
    File.open(file_name, 'w') {|file|
      file.flock(File::LOCK_EX)
      file.write(Utils::Encryption.encrypt(data.to_yaml, config))
      file.flock(File::LOCK_UN)
    }
    @datetime_open_ai_file[file_name] = File.mtime(file_name)
    if session_name != ''
      if !@open_ai[team_id_user][:chat_gpt][:sessions].key?(session_name) #delete file if session is not longer available
        if File.exist?(File.join(config.path, "openai/#{team_id}", "#{user_name}/session_#{session_name}.txt"))
          File.delete(File.join(config.path, "openai/#{team_id}", "#{user_name}/session_#{session_name}.txt"))
        end
      else
        file_name = File.join(config.path, "openai/#{team_id}", "#{user_name}/session_#{session_name}.txt")
        content = @ai_gpt[team_id_user][session_name].join("\n").force_encoding("UTF-8")
        File.open(file_name, 'w') {|file|
            file.flock(File::LOCK_EX)
          file.write(Utils::Encryption.encrypt(content, config))
          file.flock(File::LOCK_UN)
        }
      end
    end
  end
end