<?php

declare(strict_types=1);

namespace Autogedal\Reduceri\Plugin;

use Autogedal\Reduceri\Model\ReduceriState;
use Magento\Catalog\Model\Category;
use Magento\Catalog\Model\Layer\Category\CollectionFilter;
use Magento\Catalog\Model\ResourceModel\Product\Collection;

class AddDiscountFilter
{
    public function __construct(
        private readonly ReduceriState $reduceriState
    ) {}

    public function afterFilter(
        CollectionFilter $subject,
        mixed            $result,
        Collection       $collection,
        Category         $category
    ): void {
        if (!$this->reduceriState->isCategoryView()) {
            return;
        }

        // Goes to SearchCriteriaBuilderProvider → included in the OpenSearch query
        // BEFORE _renderFiltersBefore() executes. am_on_sale is indexed per
        // customer-group/website by Amasty's DataMapper/OnSale.
        $collection->addFieldToFilter('am_on_sale', 1);
    }
}
