Ventas
This commit is contained in:
44
app/src/Service/Menu.php
Normal file
44
app/src/Service/Menu.php
Normal file
@ -0,0 +1,44 @@
|
||||
<?php
|
||||
namespace Incoviba\Service;
|
||||
|
||||
use Incoviba\Repository;
|
||||
|
||||
class Menu
|
||||
{
|
||||
public function __construct(protected Repository\Menu $menuRepository, protected Permission $permissionService, protected object $urls) {}
|
||||
|
||||
public function build(int $user_id): string
|
||||
{
|
||||
$menus = $this->getValid($user_id);
|
||||
$output = [];
|
||||
foreach ($menus as $menu) {
|
||||
$output []= $this->buildItem($menu);
|
||||
}
|
||||
return implode(PHP_EOL, $output);
|
||||
}
|
||||
protected function buildItem(mixed $item): string
|
||||
{
|
||||
if (isset($item->submenus)) {
|
||||
return $this->buildDropdown($item);
|
||||
}
|
||||
return "<a class=\"item\" href=\"{{$this->urls->base}}/{{$item->url}}\">{{$item->title}}</a>";
|
||||
}
|
||||
protected function buildDropdown(mixed $item): string
|
||||
{
|
||||
$output []= '<div class="ui simple dropdown item">';
|
||||
$output []= $item->title;
|
||||
$output []= '<i class="dropdown icon"></i>';
|
||||
$output []= '<div class="menu">';
|
||||
foreach ($item->submenus as $menu) {
|
||||
$output []= $this->buildItem($menu);
|
||||
}
|
||||
$output []= '</div>';
|
||||
$output []= '</div>';
|
||||
return implode(PHP_EOL, $output);
|
||||
}
|
||||
|
||||
public function getValid(int $user_id): array
|
||||
{
|
||||
return $this->menuRepository->fetchByUser($user_id);
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user