<?php

namespace Autogedal\Labels\Controller\Adminhtml\Label;

use Autogedal\Labels\Model\LabelFactory;
use Magento\Backend\App\Action;
use Magento\Framework\Registry;
use Magento\Framework\View\Result\PageFactory;

class Edit extends Action
{
    public const ADMIN_RESOURCE = 'Autogedal_Labels::labels';

    private $resultPageFactory;
    private $labelFactory;
    private $coreRegistry;

    public function __construct(
        Action\Context $context,
        PageFactory $resultPageFactory,
        LabelFactory $labelFactory,
        Registry $coreRegistry
    ) {
        parent::__construct($context);
        $this->resultPageFactory = $resultPageFactory;
        $this->labelFactory = $labelFactory;
        $this->coreRegistry = $coreRegistry;
    }

    public function execute()
    {
        $id = (int)$this->getRequest()->getParam('label_id');
        $model = $this->labelFactory->create();

        if ($id) {
            $model->load($id);
            if (!$model->getId()) {
                $this->messageManager->addErrorMessage(__('This label no longer exists.'));
                return $this->_redirect('*/*/');
            }
        }

        $this->coreRegistry->register('autogedal_labels_label', $model);

        $resultPage = $this->resultPageFactory->create();
        $resultPage->setActiveMenu('Autogedal_Labels::labels');
        $resultPage->getConfig()->getTitle()->prepend(
            $model->getId() ? __('Edit Label %1', $model->getName()) : __('New Label')
        );

        return $resultPage;
    }
}

