class SlackSmartBot
  def get_vacations
    @vacations ||= {}
    old_vacations_file = config.file_path.gsub(".rb", "_vacations.yaml") #to be backward compatible
    require 'yaml'
    if File.exist?(old_vacations_file)
      @logger.info 'Migrating vacations to new format'
      vacations = @vacations
      vacations = YAML.load(File.read(old_vacations_file))
      @vacations = vacations unless vacations.is_a?(FalseClass)
      @vacations.each do |key, value|
        File.write(File.join(config.path, "vacations", "v_#{key}.yaml"), Utils::Encryption.encrypt(value.to_yaml, config))
      end
      @logger.info "Deleting old_vacations_file: #{old_vacations_file}"
      File.delete(old_vacations_file)
    end
    # get the yaml files. They will be on /vacations then in there a folder for each team and inside the yaml files for each user
    folders = Dir.glob(File.join(config.path, "vacations", "*"))
    folders.each do |folder|
      if File.directory?(folder)
        files = Dir.glob(File.join(folder, "*.yaml"))
        @datetime_vacations_file ||= {}
        files.each do |file|
          if !defined?(@datetime_vacations_file) or !@datetime_vacations_file.key?(file) or @datetime_vacations_file[file] != File.mtime(file)
            vacations_user = YAML.load(Utils::Encryption.decrypt(File.read(file), config))
            #the key of @vacations will be the team_id_user_name
            team_id = File.basename(folder)
            @vacations["#{team_id}_#{File.basename(file).gsub("v_","").gsub(".yaml","")}"] = vacations_user
            @datetime_vacations_file[file] = File.mtime(file)
          end
        end
      end
    end
  end
end