<?php
namespace Products\NotificationsBundle\Entity\Lists;
use App\Model\Query\ConditionQuery\Condition\ContainsCondition;
use App\Model\Query\ConditionQuery\Condition\InCondition;
use App\Model\Query\ConditionQuery\ConditionGroupInterface;
use App\Model\Query\ConditionQuery\ConditionQuery;
use App\Model\Query\ConditionQuery\ConditionQueryListInterface;
use Doctrine\ORM\Mapping as ORM;
use Products\NotificationsBundle\Entity\AbstractList;
use Products\NotificationsBundle\Util\ListBuilder\AbstractListBuilder;
/**
* Class SchoolList
* @package Products\NotificationsBundle\Entity\Lists
*
* @ORM\Entity(
* repositoryClass = "Products\NotificationsBundle\Doctrine\Repository\Lists\SchoolListRepository",
* )
*/
class SchoolList extends AbstractList implements ConditionQueryListInterface
{
public const DISCR = 'school';
/**
* {@inheritDoc}
*/
public function getConditionQuery(): ConditionQuery
{
return new ConditionQuery(
ConditionQuery::PROFILE_ENTITY,
[
new InCondition(AbstractListBuilder::ENTITIES__PROFILES.'.role', $this->getRoles()),
// the metadata in profiles will have an "_orgs" key that will always be an array
new ContainsCondition(AbstractListBuilder::ENTITIES__PROFILES.'.metadata/_orgs', $this->getOneRosterId())
],
ConditionGroupInterface::MODES__AND,
);
}
}