<?php
/**
 * Copyright © Magento, Inc. All rights reserved.
 * See COPYING.txt for license details.
 */
namespace Magento\Newsletter\Block\Adminhtml;

use Magento\Newsletter\Model\ResourceModel\Problem\Collection;

/**
 * Newsletter problem block template.
 *
 * @api
 * @author      Magento Core Team <core@magentocommerce.com>
 * @since 100.0.2
 */
class Problem extends \Magento\Backend\Block\Template
{
    /**
     * @var string
     */
    protected $_template = 'Magento_Newsletter::problem/list.phtml';

    /**
     * @var \Magento\Newsletter\Model\ResourceModel\Problem\Collection
     */
    protected $_problemCollection;

    /**
     * @param \Magento\Backend\Block\Template\Context $context
     * @param Collection $problemCollection
     * @param array $data
     */
    public function __construct(
        \Magento\Backend\Block\Template\Context $context,
        Collection $problemCollection,
        array $data = []
    ) {
        $this->_problemCollection = $problemCollection;
        parent::__construct($context, $data);
    }

    /**
     * @return void
     * @SuppressWarnings(PHPMD.UnusedLocalVariable)
     */
    protected function _construct()
    {
        parent::_construct();

        $collection = $this->_problemCollection->addSubscriberInfo()->addQueueInfo();
    }

    /**
     * Prepare for the newsletter block layout
     *
     * @return $this
     */
    protected function _prepareLayout()
    {
        $this->setChild(
            'deleteButton',
            $this->getLayout()->createBlock(
                \Magento\Backend\Block\Widget\Button::class,
                'del.button'
            )->setData(
                ['label' => __('Delete Selected Problems'), 'onclick' => 'problemController.deleteSelected();']
            )
        );

        $this->setChild(
            'unsubscribeButton',
            $this->getLayout()->createBlock(
                \Magento\Backend\Block\Widget\Button::class,
                'unsubscribe.button'
            )->setData(
                ['label' => __('Unsubscribe Selected'), 'onclick' => 'problemController.unsubscribe();']
            )
        );
        return parent::_prepareLayout();
    }

    /**
     * Get the html element for unsubscribe button
     *
     * @return $string
     */
    public function getUnsubscribeButtonHtml()
    {
        return $this->getChildHtml('unsubscribeButton');
    }

    /**
     * Get the html element for delete button
     *
     * @return $string
     */
    public function getDeleteButtonHtml()
    {
        return $this->getChildHtml('deleteButton');
    }

    /**
     * Return true if the size is greater than 0
     *
     * @return bool
     * @SuppressWarnings(PHPMD.BooleanGetMethodName)
     */
    public function getShowButtons()
    {
        return $this->_problemCollection->getSize() > 0;
    }
}