<?php

namespace Lc\CaracoleBundle\Repository;

use Lc\CaracoleBundle\Model\Merchant\MerchantInterface;
use Lc\CaracoleBundle\Model\Section\SectionInterface;

trait SectionRepositoryQueryTrait
{
    protected bool $isJoinSection = false;

    public function filterBySection(SectionInterface $section)
    {
        return $this->andWhereSection($this->id, $section);
    }

    public function filterByMerchantViaSection(MerchantInterface $merchant)
    {
        $this->joinSection();
        return $this->andWhere('s.merchant = :merchant')
                ->setParameter('merchant', $merchant);
    }

    public function joinSection(): self
    {
        if (!$this->isJoinSection) {
            $this->isJoinSection = true;

            return $this
                    ->leftJoin('.section', 's');
        }
        return $this;
    }
}