<?php

namespace Autogedal\Labels\Controller\Adminhtml\Label;

use Autogedal\Labels\Model\LabelFactory;
use Magento\Backend\App\Action;

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

    private $labelFactory;

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

    public function execute()
    {
        $id = (int)$this->getRequest()->getParam('label_id');
        if (!$id) {
            $this->messageManager->addErrorMessage(__('We can\'t find a label to delete.'));
            return $this->_redirect('*/*/');
        }

        try {
            $model = $this->labelFactory->create()->load($id);
            if ($model->getId()) {
                $model->delete();
                $this->messageManager->addSuccessMessage(__('The label has been deleted.'));
            } else {
                $this->messageManager->addErrorMessage(__('This label no longer exists.'));
            }
        } catch (\Throwable $e) {
            $this->messageManager->addErrorMessage($e->getMessage());
            return $this->_redirect('*/*/edit', ['label_id' => $id]);
        }

        return $this->_redirect('*/*/');
    }
}

