<?php
declare(strict_types=1);

namespace Autogedal\Manufacturers\Model;

use Magento\Catalog\Model\Product;
use Magento\Eav\Model\Config as EavConfig;
use Magento\Framework\App\Config\ScopeConfigInterface;
use Magento\Store\Model\ScopeInterface;

class Config
{
    private const XML_PATH_ENABLED = 'autogedal_manufacturers/general/enabled';
    private const XML_PATH_PRODUCT_ATTRIBUTE = 'autogedal_manufacturers/general/product_attribute';
    public const XML_PATH_INACTIVE_MANUFACTURERS = 'autogedal_manufacturers/general/inactive_manufacturers';

    public function __construct(
        private readonly ScopeConfigInterface $scopeConfig,
        private readonly EavConfig $eavConfig
    ) {
    }

    public function isEnabled($storeId = null): bool
    {
        return $this->scopeConfig->isSetFlag(self::XML_PATH_ENABLED, ScopeInterface::SCOPE_STORE, $storeId);
    }

    public function getProductAttribute(): string
    {
        return $this->getGlobalValue(self::XML_PATH_PRODUCT_ATTRIBUTE);
    }

    public function getProductAttributeId(): int
    {
        return (int)$this->eavConfig->getAttribute(Product::ENTITY, $this->getProductAttribute())->getId();
    }

    public function getInactiveManufacturerIds(): array
    {
        $value = $this->getGlobalValue(self::XML_PATH_INACTIVE_MANUFACTURERS);

        return $value !== '' ? array_map('intval', explode(',', $value)) : [];
    }

    public function isManufacturerActive(int $optionId): bool
    {
        return !in_array($optionId, $this->getInactiveManufacturerIds(), true);
    }

    private function getGlobalValue(string $path): string
    {
        return (string)$this->scopeConfig->getValue($path, ScopeConfigInterface::SCOPE_TYPE_DEFAULT);
    }
}
