|
- <?php
-
- namespace Lc\SovBundle\Repository\User;
-
- use App\Entity\Merchant\Merchant;
- use App\Entity\Newsletter\Newsletter;
- use Knp\Component\Pager\PaginatorInterface;
- use Lc\SovBundle\Repository\AbstractRepositoryQuery;
-
- class UserRepositoryQuery extends AbstractRepositoryQuery implements UserRepositoryQueryInterface
- {
- public function __construct(UserRepository $repository, PaginatorInterface $paginator)
- {
- parent::__construct($repository, 'user', $paginator);
- }
-
- protected $isJoinGroupUsers = false;
-
- public function joinGroupUsers($addSelect = true): self
- {
- if (!$this->isJoinGroupUsers) {
- $this->isJoinGroupUsers = true;
-
- $this->leftJoin('.groupUsers', 'groupUsers');
- if($addSelect){
- $this->addSelect('groupUsers');
- }
- }
- return $this;
- }
-
-
- public function filterByNewsletter(Newsletter $newsletter): self
- {
- return $this
- ->andWhere(':newsletter MEMBER OF .newsletters')
- ->setParameter('newsletter', $newsletter->getId());
- }
-
- public function filterByRole(string $role): self
- {
- return $this
- ->andWhere('.roles LIKE :roles')
- ->setParameter('roles', '%"' . $role . '"%');
- }
-
- public function filterByTicketTypeNotification(string $ticketType): self
- {
- return $this
- ->andWhere('.ticketTypesNotification LIKE :ticketType')
- ->setParameter('ticketType', '%"' . $ticketType . '"%');
- }
-
- public function filterByEmail(string $email): self
- {
- return $this
- ->andWhere('.email LIKE :email')
- ->setParameter('email', $email);
- }
-
- public function filterByTerm(string $term): self
- {
- return $this
- ->andWhere('.email LIKE :term OR .firstname LIKE :term OR .lastname LIKE :term')
- ->setParameter('term', '%'.$term.'%');
- }
-
- }
|