<?php

namespace Autogedal\Labels\Controller\Adminhtml\Label;

use Autogedal\Labels\Model\LabelFactory;
use Magento\Backend\App\Action;
use Magento\Framework\Controller\Result\Redirect;

class MassDelete 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(): Redirect
    {
        $ids = (array)$this->getRequest()->getParam('selected', []);

        if (empty($ids)) {
            $this->messageManager->addErrorMessage(__('Please select label(s) to delete.'));
            return $this->_redirect('*/*/');
        }

        $deleted = 0;

        foreach ($ids as $id) {
            $id = (int)$id;
            if (!$id) {
                continue;
            }

            $model = $this->labelFactory->create()->load($id);
            if ($model->getId()) {
                $model->delete();
                $deleted++;
            }
        }

        if ($deleted) {
            $this->messageManager->addSuccessMessage(
                __('A total of %1 record(s) have been deleted.', $deleted)
            );
        } else {
            $this->messageManager->addNoticeMessage(__('No labels were deleted.'));
        }

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

