---
# System prepended metadata

title: Organograma

---

# Organograma

Dado um desenho organizacional de pessoas respondendo para outras pessoas:

```
        +-----+
        | CEO |
        +-----+
         /    \
   +-----+     +-----+
   | CTO |     | CFO |
   +-----+     +-----+
   /     \          \
 +-----+  +-----+   +-----+
 | MA1 |  | MA2 |   | AF1 |
 +-----+  +-----+   +-----+
    |
 +-----+
 | DEV |
 +-----+
```

Podemos representar essa relações na forma de uma lista, usando um campo `parent_id` para relacionar cada item ao seu "parent":

```js
let workers = [
  { id: 6, name: "Financial 1", parent_id: 3 },
  { id: 4, name: "Manager 1", parent_id: 2 },
  { id: 1, name: "CEO", parent_id: null },
  { id: 2, name: "CTO", parent_id: 1 },
  { id: 3, name: "CFO", parent_id: 1 },
  { id: 5, name: "Manager 2", parent_id: 2 },
  { id: 7, name: "Developer", parent_id: 4 },
];
```

### Desafio

Dado a lista de workers, implemente a função `process` de forma que a lista seja convertida em uma estrutura de "objetos/json" conforme o exemplo:

```js
function process(workers) {
  /// ...implement
}

process(workers) == [{
  id: 1,
  name: "CEO",
  children: [{
    id: 2,
    name: "CTO",
    children: [{ 
      id: 4,
      name: "Manager 1",
      children: [{
        id: 7,
        name: "Developer",
        children: [],
      }]
    }, {
      id: 5,
      name: "Manager 2",
      children: []
    }]
  }, {
    id: 3,
    name: "CFO",
    children: [{
      id: 6,
      name: "Financial 1",
      children: []
    }]
  }]
}]
```