class Eco::API::UseCases::DefaultCases::SupersCyclicIdentify

Attributes

options[R]
people[R]
session[R]

Public Instance Methods

main(people, session, options, usecase) click to toggle source
# File lib/eco/api/usecases/default_cases/supers_cyclic_identify_case.rb, line 7
def main(people, session, options, usecase)
  options[:end_get] = false
  @session = session; @options = options; @people = people

  save!(cyclic_sets)
end

Private Instance Methods

create_file(sets, file:, format: :txt) click to toggle source
# File lib/eco/api/usecases/default_cases/supers_cyclic_identify_case.rb, line 47
def create_file(sets, file:, format: :txt)
  File.open(file, "w") do |fd|
    fd << sets_to_str(sets, format: format)
  end
  puts "Generated file #{file}"
end
cyclic_sets() click to toggle source
# File lib/eco/api/usecases/default_cases/supers_cyclic_identify_case.rb, line 16
def cyclic_sets
  Eco::API::Common::People::SupervisorHelpers.identify_cyclic_chains(people)
end
file() click to toggle source
# File lib/eco/api/usecases/default_cases/supers_cyclic_identify_case.rb, line 20
def file
  @file ||= options.dig(:output, :file) || "cyclic_supers.txt"
end
save!(data) click to toggle source
# File lib/eco/api/usecases/default_cases/supers_cyclic_identify_case.rb, line 24
def save!(data)
  if data.empty?
    session.logger.info("There were no cyclic supervisors identified!!")
    return
  end

  ext  = File.extname(file).downcase.delete(".")

  File.open(file, "w") do |fd|
    if ext == "txt"
      create_file(data, file: file, format: :txt)
    elsif ext == "html"
      puts "html is still not supported"
      exit(1)
      create_file(data, file: file, format: :html)
    elsif ext == "json"
      puts "json is still not supported"
      exit(1)
      create_file(data, file: file, format: :json)
    end
  end
end
set_to_str(set, lev: 0, format: :txt) click to toggle source
# File lib/eco/api/usecases/default_cases/supers_cyclic_identify_case.rb, line 63
def set_to_str(set, lev: 0, format: :txt)
  raise "Required Array. Given: #{set.class}" unless set.is_a?(Array)
  "".tap do |str|
    entry = set.shift
    str << "#{"  " * lev}#{(lev > 0)? "+-#{lev}- " : ""}#{entry.name} (#{entry.external_id}|#{entry.email}|#{entry.id})\n"
    str << set_to_str(set, lev: lev + 1, format: format) unless !set || set.empty?
  end
end
sets_to_str(sets, format: :txt) click to toggle source
# File lib/eco/api/usecases/default_cases/supers_cyclic_identify_case.rb, line 54
def sets_to_str(sets, format: :txt)
  raise "Required Array. Given: #{sets.class}" unless sets.is_a?(Array)
  "".tap do |str|
    sets.each do |set|
      str << set_to_str(set, format: format)
    end
  end
end