<?php
declare(strict_types=1);

namespace Autogedal\Manufacturers\Plugin\Cms\Controller\Page;

use Autogedal\Manufacturers\Model\ResourceModel\ManufacturerPage as ManufacturerPageResource;
use Magento\Cms\Controller\Page\View as ViewAction;
use Magento\Framework\Controller\Result\ForwardFactory;
use Magento\Framework\Controller\ResultInterface;

class View
{
    public function __construct(
        private readonly ManufacturerPageResource $manufacturerPageResource,
        private readonly ForwardFactory $forwardFactory
    ) {
    }

    public function aroundExecute(ViewAction $subject, callable $proceed): ResultInterface
    {
        $request = $subject->getRequest();
        $pageId = (int)($request->getParam('page_id') ?? $request->getParam('id'));

        return in_array($pageId, $this->manufacturerPageResource->getCmsPageIds(), true)
            ? $this->forwardFactory->create()->forward('noroute')
            : $proceed();
    }
}
