Passed
Push — master ( 51edae...d29a9b )
by Curtis
11:52 queued 05:54
created

Organizer::__construct()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 3
Code Lines 1

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
cc 1
eloc 1
c 1
b 0
f 0
nc 1
nop 1
dl 0
loc 3
rs 10
1
<?php
2
3
namespace App\Service\enso\menus;
4
5
use LaravelEnso\Helpers\Services\Obj;
6
use App\Models\enso\Menus\Menu;
7
8
class Organizer
9
{
10
    private Obj $menus;
11
12
    public function __construct(array $menus)
13
    {
14
        $this->menus = new Obj($menus);
15
    }
16
17
    public function handle(): void
18
    {
19
        $this->organize($this->menus);
20
    }
21
22
    private function organize(Obj $menus): void
23
    {
24
        $menus->each(fn ($menu, $index) => $this->reorder($menu, $index));
25
    }
26
27
    private function reorder(Obj $menu, int $index): void
28
    {
29
        Menu::find($menu->get('id'))
30
            ->update(['order_index' => ($index + 1) * 10]);
31
32
        if ($menu->get('has_children')) {
33
            $this->organize($menu->get('children'));
34
        }
35
    }
36
}
37