<?php

namespace Autogedal\InternalLinks\Model\Config\Source;

use Magento\Eav\Model\ResourceModel\Entity\Attribute\CollectionFactory;
use Magento\Framework\Data\OptionSourceInterface;

class EavAttributes implements OptionSourceInterface
{
    private $attributeCollectionFactory;

    public function __construct(
        CollectionFactory $attributeCollectionFactory
    ) {
        $this->attributeCollectionFactory = $attributeCollectionFactory;
    }

    public function toOptionArray()
    {
        $options = [];

        $collection = $this->attributeCollectionFactory->create();
        $collection->addFieldToFilter('entity_type_id', 4)
                   ->addFieldToFilter('frontend_input', ['in' => ['select', 'multiselect']])
                   ->setOrder('attribute_code', 'ASC');

        foreach ($collection as $attribute) {
            $options[] = [
                'value' => $attribute->getAttributeId(),
                'label' => $attribute->getAttributeCode() . ' (ID: ' . $attribute->getAttributeId() . ')'
            ];
        }

        return $options;
    }
}
