<?php

namespace App\Models\GenericBackoffice;

use App\Libs\Database\Eloquent\BaseModel;

class Menu extends BaseModel
{
    public function menuItems()
    {
        return $this->hasMany(MenuItem::class);
    }

    public function getStructuredItems()
    {
        $menuItems = $this->menuItems()->with('entry')->orderBy('position')->get();
        $list = array();
        foreach ($menuItems as $menuItem) {
            $list[$menuItem->id] = $menuItem;
        }
        return $this->_structureMenu($list);
    }

    private function _structureMenu($listItems, $root = null)
    {
        $return = [];
        foreach ($listItems as $id => $menuItem) {
            if ($menuItem->parent_id == $root) {
                unset($listItems[$id]);
                $menuItem->children = $this->_structureMenu($listItems, $menuItem->id);
                $return[] = $menuItem;
            }
        }
        return $return;
    }

}