<?php

declare(strict_types=1);

namespace Seka\Portal\Modul\Statistiky\Repositories\Eloquent\Criteria\Zaznam;

use Prettus\Repository\Contracts\CriteriaInterface;
use Prettus\Repository\Contracts\RepositoryInterface;
use Seka\Portal\Modul\Statistiky\Entities\Zaznam\ValueObjects\Subjekt;

/**
 * Class ZaznamSubjektCriteria
 *
 * @package Seka\Portal\Modul\Statistiky\Repositories\Eloquent\Criteria\Zaznam
 */
final class ZaznamSubjektCriteria implements CriteriaInterface
{
    /**
     * @var \Seka\Portal\Modul\Statistiky\Entities\Zaznam\ValueObjects\Subjekt
     */
    private Subjekt $subjekt;

    /**
     * ZaznamSubjektCriteria constructor.
     *
     * @param \Seka\Portal\Modul\Statistiky\Entities\Zaznam\ValueObjects\Subjekt $subjekt
     */
    public function __construct(Subjekt $subjekt)
    {
        $this->subjekt = $subjekt;
    }

    /**
     * @inheritDoc
     */
    public function apply($model, RepositoryInterface $repository)
    {
        return $model->where('subjekt_druh', $this->subjekt->druh()->value)
            ->where('subjekt_nazov', $this->subjekt->nazov());
    }
}
