<?php

namespace Autogedal\Labels\Block\Product\Listing;

use Autogedal\Labels\Block\Product\AbstractLabels;
use Autogedal\Labels\Model\LabelResolver;
use Magento\Catalog\Api\Data\ProductInterface;
use Magento\Catalog\Model\Product;
use Magento\Framework\View\Element\Template\Context;
use Magento\Store\Model\StoreManagerInterface;

class Labels extends AbstractLabels
{
    private $labelResolver;

    public function __construct(
        Context $context,
        StoreManagerInterface $storeManager,
        LabelResolver $labelResolver,
        array $data = []
    ) {
        parent::__construct($context, $storeManager, $data);
        $this->labelResolver = $labelResolver;
    }

    /**
     * @return ProductInterface|Product|null
     */
    public function getProduct()
    {
        $product = $this->getData('product');
        if ($product instanceof ProductInterface) {
            return $product;
        }

        return null;
    }

    /**
     * @return \Autogedal\Labels\Model\LabelView[]
     */
    public function getLabels(): array
    {
        $product = $this->getProduct();
        if (!$product) {
            return [];
        }

        return $this->labelResolver->getLabels($product, 'plp');
    }
}
