<?php

namespace Leadlion\Autogedal\Helper;

use Amasty\Shopby\Model\Layer\Filter\Resolver\FilterRequestDataResolver;
use Amasty\Shopby\Model\Layer\Filter\Resolver\FilterSettingResolver;
use Amasty\Shopby\Model\Source\SortOptionsBy;
use Magento\Catalog\Model\Layer\Filter\Item\DataBuilder as ItemDataBuilder;


class Filter
{

    /**
     * @var FilterRequestDataResolver
     */
    private $filterRequestDataResolver;
    /**
     * @var FilterSettingResolver
     */
    private $filterSettingResolver;
    /**
     * @var Config
     */
    private $helper;
    /**
     * @var \Amasty\Shopby\Helper\FilterSetting
     */
    private $filterSettingHelper;
    /**
     * @var ItemDataBuilder
     */
    private $itemDataBuilder;

    public function __construct(

        FilterRequestDataResolver $filterRequestDataResolver,
        \Amasty\Shopby\Helper\FilterSetting $filterSettingHelper,
        FilterSettingResolver $filterSettingResolver,
        ItemDataBuilder $itemDataBuilder,
        \Leadlion\Autogedal\Helper\Config $helper
    )
    {

        $this->filterRequestDataResolver = $filterRequestDataResolver;
        $this->filterSettingHelper = $filterSettingHelper;
        $this->filterSettingResolver = $filterSettingResolver;
        $this->helper = $helper;
        $this->itemDataBuilder = $itemDataBuilder;
    }

    public function afterGetItemsCount(\Amasty\Shopby\Model\Layer\Filter\Attribute $filter,$result)
    {

        $autoFilters= explode(',',$this->helper->getConfig('leadlion/layer_navigation/auto_filters'));
        $code= $filter->getAttributeModel()->getAttributeCode();
        $filterSetting=$this->filterSettingHelper->getSettingByLayerFilter($filter);

        if( (in_array($code,$autoFilters) || $filterSetting->isExpanded())   && !$this->filterRequestDataResolver->isApplied($filter) ){

            $filter->setData('is_expanded',true);
        }
        if( in_array($code,$autoFilters) && $filter->getData('is_expanded')){
            $filter->setData('is_highlighted',true);
        }

        return $result;
    }


}
