Vous ne pouvez pas sélectionner plus de 25 sujets Les noms de sujets doivent commencer par une lettre ou un nombre, peuvent contenir des tirets ('-') et peuvent comporter jusqu'à 35 caractères.

61 lines
1.6KB

  1. <?php
  2. namespace Lc\CaracoleBundle\Repository\Reduction;
  3. use Knp\Component\Pager\PaginatorInterface;
  4. use Lc\CaracoleBundle\Model\Reduction\ReductionCreditModel;
  5. use Lc\CaracoleBundle\Repository\MerchantRepositoryQueryTrait;
  6. use Lc\SovBundle\Model\User\UserInterface;
  7. use Lc\SovBundle\Repository\AbstractRepositoryQuery;
  8. class ReductionCreditRepositoryQuery extends AbstractRepositoryQuery
  9. {
  10. use MerchantRepositoryQueryTrait;
  11. // @TODO : à utiliser
  12. protected $isJoinUsers = false;
  13. public function __construct(ReductionCreditRepository $repository, PaginatorInterface $paginator)
  14. {
  15. parent::__construct($repository, 'reductionCredit', $paginator);
  16. }
  17. public function filterByUser(UserInterface $user)
  18. {
  19. return $this
  20. ->andWhere(':user MEMBER OF .users')
  21. ->setParameter('user', $user);
  22. }
  23. public function filterByOwner(UserInterface $user)
  24. {
  25. return $this
  26. ->andWhere('.owner = :user')
  27. ->setParameter('user', $user);
  28. }
  29. public function filterByType(string $type = ReductionCreditModel::TYPE_CREDIT)
  30. {
  31. return $this
  32. ->andWhere('.type = :type')
  33. ->setParameter('type', $type);
  34. }
  35. public function filterInactive()
  36. {
  37. $this->joinUsers();
  38. return $this->andWhere('.users IS EMPTY');
  39. }
  40. public function filterActive()
  41. {
  42. $this->joinUsers();
  43. return $this->andWhere('.users IS NOT EMPTY');
  44. }
  45. public function joinUsers()
  46. {
  47. return $this->leftJoin('.users', 'users');
  48. }
  49. }