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

Organizer   A

Complexity

Total Complexity 5

Size/Duplication

Total Lines 26
Duplicated Lines 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
eloc 9
c 1
b 0
f 0
dl 0
loc 26
rs 10
wmc 5

4 Methods

Rating   Name   Duplication   Size   Complexity  
A handle() 0 3 1
A reorder() 0 7 2
A organize() 0 3 1
A __construct() 0 3 1
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