<?php
declare(strict_types=1);

namespace Autogedal\Reduceri\Model\Config\Source;

use Magento\Catalog\Model\ResourceModel\Category\CollectionFactory;
use Magento\Framework\Data\OptionSourceInterface;

class Categories implements OptionSourceInterface
{
    public function __construct(
        private readonly CollectionFactory $collectionFactory
    ) {}

    public function toOptionArray(): array
    {
        $collection = $this->collectionFactory->create()
            ->addAttributeToSelect('name')
            ->addAttributeToFilter('level', ['in' => [2, 3]])
            ->addIsActiveFilter()
            ->setOrder('level', 'ASC')
            ->setOrder('name', 'ASC');

        $options = [];
        foreach ($collection as $category) {
            $options[] = [
                'value' => $category->getId(),
                'label' => str_repeat('— ', $category->getLevel() - 2) . $category->getName(),
            ];
        }
        return $options;
    }
}
