<?php
namespace  Autogedal\Banners\Block\Frontend;

use Magento\Framework\View\Element\Template;
use Magento\Framework\ObjectManagerInterface;
use Magento\Framework\Registry;
use Magento\Catalog\Model\Category;

class BannersSection extends Template
{
    private $_objectManager;
    private $_registry;
    private $_categoryRepository;

    public function __construct(
        Template\Context $context,
        ObjectManagerInterface $objectManager,
        Registry $registry,
        Category $categoryRepository,
        array $data = [])
    {
        $this->_registry = $registry;
        $this->_objectManager = $objectManager;
        $this->_categoryRepository = $categoryRepository;

        parent::__construct($context, $data);
    }

    public function getBannersByPosition()
    {
        $selectedElements = $this->getSelectedElementsByObjectType();
        $position = $this->getData('position') ?? -1;
        $banners = $this->_objectManager->get('Autogedal\Banners\Model\Banner')->getCollection()->addFieldToFilter('position', $position)->addFieldToFilter('is_active', 1)->addFieldToFilter('banner_id', $selectedElements);

        return $banners;
    }

    public function getSelectedElementsByObjectType()
    {
        $selectedEelements = "";
        $currentPageAction  = $this->getRequest()->getFullActionName();

        if ($currentPageAction == "catalog_product_view") {
            $currentProduct = $this->_registry->registry('current_product');
            $currentProductCategoriesIds = $currentProduct->getCategoryIds();

            foreach ($currentProductCategoriesIds as $categoryId)
            {
                $category = $this->_categoryRepository->load((int)$categoryId);

                $selectedBannersTemp = $category->getData('banners_selection');
                if (!empty($selectedBannersTemp)) {
                    $selectedEelements .= $selectedBannersTemp;
                }
            }
        }

        return explode(",", $selectedEelements);
    }

    public function _toHtml()
    {
        $this->setData('banners', $this->getBannersByPosition());
        return parent::_toHtml(); // TODO: Change the autogenerated stub
    }
}