class Eco::API::UseCases::DefaultCases::SupersHierarchy
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_hierarchy_case.rb, line 7 def main(people, session, options, usecase) options[:end_get] = false @session = session; @options = options; @people = people save!(hierarchy) end
Private Instance Methods
create_file(tree, file:, format: :txt)
click to toggle source
# File lib/eco/api/usecases/default_cases/supers_hierarchy_case.rb, line 42 def create_file(tree, file:, format: :txt) File.open(file, "w") do |fd| fd << tree_to_str(tree, format: format) end puts "Generated file #{file}" end
file()
click to toggle source
# File lib/eco/api/usecases/default_cases/supers_hierarchy_case.rb, line 20 def file @file ||= options.dig(:output, :file) || "supers_hierarchy.txt" end
hierarchy()
click to toggle source
# File lib/eco/api/usecases/default_cases/supers_hierarchy_case.rb, line 16 def hierarchy Eco::API::Common::People::SupervisorHelpers.supervisors_tree(people) end
save!(data)
click to toggle source
# File lib/eco/api/usecases/default_cases/supers_hierarchy_case.rb, line 24 def save!(data) 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
tree_to_str(tree, lev: 0, format: :txt)
click to toggle source
# File lib/eco/api/usecases/default_cases/supers_hierarchy_case.rb, line 49 def tree_to_str(tree, lev: 0, format: :txt) raise "Required Hash tree structure. Given: #{tree.class}" unless tree.is_a?(Hash) "".tap do |str| tree.each do |entry, subtree| str << "#{" " * lev}#{(lev > 0)? "+-#{lev}- " : ""}#{entry.name} (#{entry.external_id}|#{entry.email}|#{entry.id})\n" str << tree_to_str(subtree, lev: lev + 1, format: format) unless !subtree || subtree.empty? end end end