<?php

declare(strict_types=1);

namespace Leadlion\Autogedal\Model\SeoOptionsModifier;

use Amasty\ShopbySeo\Helper\Data;
use Magento\Catalog\Model\Product\Url as ProductUrl;
use Amasty\ShopbySeo\Model\ConfigProvider;

class UniqueBuilder extends \Amasty\ShopbySeo\Model\SeoOptionsModifier\UniqueBuilder
{
    /**
     * @var array
     */
    private $cache = [];

    /**
     * @var Data
     */
    private $seoHelper;

    /**
     * @var ProductUrl
     */
    private $productUrl;

    /**
     * @var ConfigProvider
     */
    private $configProvider;

    public function __construct(
        ProductUrl $productUrl,
        ?ConfigProvider $configProvider
    ) {
        parent::__construct(
            $productUrl,
            $configProvider
        );
        $this->productUrl = $productUrl;
        $this->configProvider = $configProvider;
    }

    public function execute(string $value, $optionId = 0, bool $forceUniqueValue = false): string
    {
        // @codingStandardsIgnoreLine
        $value = html_entity_decode($value, ENT_QUOTES);
        $formattedValue = $this->productUrl->formatUrlKey($value) ?: self::DEFAULT_FORMAT;
        $formattedValue = str_replace('-', $this->configProvider->getSpecialChar(), $formattedValue);
        return $formattedValue;
    }
}
