Module: Legion::API::Routes::OrgChart::OrgChartHelpers

Defined in:
lib/legion/api/org_chart.rb

Instance Method Summary collapse

Instance Method Details

#build_org_chartObject



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