17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
|
# File 'lib/legion/api/org_chart.rb', line 17
def build_org_chart
extensions = Legion::Data::Model::Extension.all
workers = Legion::Data::Model::DigitalWorker.all
extensions.map do |ext|
functions = Legion::Data::Model::Function.where(extension_id: ext.id).all
{
name: ext.name,
roles: functions.map do |func|
ext_workers = workers.select { |w| w.extension_name == ext.name }
{
name: func.name,
workers: ext_workers.map { |w| { id: w.id, name: w.name, status: w.lifecycle_state } }
}
end
}
end
rescue StandardError => e
Legion::Logging.warn "OrgChart#build_org_chart failed: #{e.message}" if defined?(Legion::Logging)
[]
end
|