Sha256: 4211d05aac7321e14a1e1bd80f71f4ce95bc7846cb6e83c28fe6cde24e9c8d62

Contents?: true

Size: 1.86 KB

Versions: 46

Compression:

Stored size: 1.86 KB

Contents

class Eco::API::UseCases::DefaultCases::CleanUnknownTags < Eco::API::Common::Loaders::UseCase
  name "clean-unknown-tags"
  type :transform

  UNKNOWN_LOCS_FILE = "unknown_locations.txt"

  REGISTER_TAGS = [
    "EVENT", "INJURY", "RISK", "CONTRACTOR", "PERMIT",
    "AUDIT", "JSEA",
    "TRAINING", "INDUCTION",
    "MEETING",  "PPE",  "CHEMICAL",
    "PLANT", "ASSET",
    "POLICY", "IDEA", "REPORTS"
  ]

  attr_reader :session, :options

  def main(people, session, options, usecase)
    @session = session; @options = options

    update   = session.new_job("main", "update", :update, usecase)
    people.each do |person|
      unknown_tags = person.filter_tags.select {|tag| !tag?(tag)}
      person.filter_tags -= unknown_tags
      unknown_tag!(*unknown_tags)
      if (account = person.account) && tag = account.default_tag
        unless tag?(tag)
          micro.refresh_default_tag(person.entry, person, options)
          unknown_tag!(tag)
        end
      end
      update.add(person)
    end
  end

  private

  def unknown_tag!(*tags)
    tags.each do |value|
      unless unknown.include?(value)
        unknown << value
        File.open(unknown_tags_file, 'a') do |fd|
          fd.write("#{value}\n")
        end
        puts "Custom detected: '#{value}'"
      end
    end
  end

  def register_tags
    REGISTER_TAGS
  end

  def unknown
    @unknown ||= []
  end

  def tag?(value)
    tagtree.tag?(value).yield_self do |is_loc|
      next true if is_loc
      if clean_register_tags?
        register_tags.any? {|reg| value == reg}
      end
    end
  end

  def tagtree
    @tagtree ||= ASSETS.config.tagtree
  end

  def unknown_tags_file
    File.join(".","#{session.enviro_name}_#{UNKNOWN_LOCS_FILE}")
  end

  def clean_register_tags?
    !options.dig(:usecase, :include_register_tags)
  end

end

Version data entries

46 entries across 46 versions & 1 rubygems

Version Path
eco-helpers-2.5.2 lib/eco/api/usecases/default_cases/clean_unknown_tags_case.rb
eco-helpers-2.5.1 lib/eco/api/usecases/default_cases/clean_unknown_tags_case.rb
eco-helpers-2.4.9 lib/eco/api/usecases/default_cases/clean_unknown_tags_case.rb
eco-helpers-2.4.8 lib/eco/api/usecases/default_cases/clean_unknown_tags_case.rb
eco-helpers-2.4.7 lib/eco/api/usecases/default_cases/clean_unknown_tags_case.rb
eco-helpers-2.4.6 lib/eco/api/usecases/default_cases/clean_unknown_tags_case.rb
eco-helpers-2.4.5 lib/eco/api/usecases/default_cases/clean_unknown_tags_case.rb
eco-helpers-2.4.4 lib/eco/api/usecases/default_cases/clean_unknown_tags_case.rb
eco-helpers-2.4.3 lib/eco/api/usecases/default_cases/clean_unknown_tags_case.rb
eco-helpers-2.4.2 lib/eco/api/usecases/default_cases/clean_unknown_tags_case.rb
eco-helpers-2.3.3 lib/eco/api/usecases/default_cases/clean_unknown_tags_case.rb
eco-helpers-2.3.2 lib/eco/api/usecases/default_cases/clean_unknown_tags_case.rb
eco-helpers-2.2.5 lib/eco/api/usecases/default_cases/clean_unknown_tags_case.rb
eco-helpers-2.2.4 lib/eco/api/usecases/default_cases/clean_unknown_tags_case.rb
eco-helpers-2.2.3 lib/eco/api/usecases/default_cases/clean_unknown_tags_case.rb
eco-helpers-2.2.2 lib/eco/api/usecases/default_cases/clean_unknown_tags_case.rb
eco-helpers-2.2.1 lib/eco/api/usecases/default_cases/clean_unknown_tags_case.rb
eco-helpers-2.1.12 lib/eco/api/usecases/default_cases/clean_unknown_tags_case.rb
eco-helpers-2.1.11 lib/eco/api/usecases/default_cases/clean_unknown_tags_case.rb
eco-helpers-2.1.10 lib/eco/api/usecases/default_cases/clean_unknown_tags_case.rb