<?php

namespace NL\NlMenubuilder\ViewHelpers\Menu\Controller;

use NL\NlMenubuilder\Domain\Model\Menu;
use NL\NlMenubuilder\Domain\Repository\MenuRepository;
use NL\NlMenubuilder\Service\MenuSecurityService;
use TYPO3\CMS\Fluid\Core\Widget\AbstractWidgetController;

class RenderController extends AbstractWidgetController
{
    /**
     * @var MenuRepository
     */
    protected $menuRepository;

    /**
     * @var MenuSecurityService
     */
    protected $menuSecurityService;

    /**
     * Inject menu repository
     *
     * @param MenuRepository $repository
     */
    public function injectMenuRepository(MenuRepository $repository): void
    {
        $this->menuRepository = $repository;
    }

    /**
     * @param MenuSecurityService $service
     */
    public function injectMenuSecurityService(MenuSecurityService $service): void
    {
        $this->menuSecurityService = $service;
    }

    /**
     * @return string
     */
    public function indexAction(): string
    {
        /** @var Menu $menu */
        $menu = $this->menuRepository->findByIdentifier($this->widgetConfiguration['uid']);

        if (!is_null($menu) && !$this->widgetConfiguration['disableSecurityCheck']) {
            $this->menuSecurityService->applySecurityCheck($menu);
        }

        $this->view->assign('menu', $menu);

        return $this->view->render($menu ? $menu->getTemplate() : Menu::DEFAULT_TEMPLATE);
    }
}