<?php

namespace App\Models\GenericBackoffice;

use App\Libs\Database\Eloquent\BaseModel;
use App\Libs\Database\Eloquent\ContentTypeModel;


class Menu extends ContentTypeModel
{
    protected $hidden = ["websites"];
    protected $with = ["websites"];

    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;
    }

}