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.

53 lines
1.3KB

  1. <?php
  2. namespace domain\PointSale\PointSale;
  3. use domain\User\User\User;
  4. use domain\_\AbstractRepositoryQuery;
  5. use domain\_\StatusInterface;
  6. class PointSaleRepositoryQuery extends AbstractRepositoryQuery
  7. {
  8. protected PointSaleDefinition $definition;
  9. public function loadDependencies(): void
  10. {
  11. $this->loadDefinition(PointSaleDefinition::class);
  12. }
  13. public function filterByIdUser(int $idUser): self
  14. {
  15. $this->andWhere(['id_user' => $idUser]);
  16. return $this;
  17. }
  18. public function filterByName(string $name): self
  19. {
  20. $this->andWhere(['name' => $name]);
  21. return $this;
  22. }
  23. public function filterIsOnline(): self
  24. {
  25. $this->andWhere(['status' => StatusInterface::STATUS_ONLINE]);
  26. return $this;
  27. }
  28. public function filterByRestrictedAccess(int $restrictedAccess): self
  29. {
  30. $this->andWhere(['restricted_access' => $restrictedAccess]);
  31. return $this;
  32. }
  33. public function filterByUserAccess(User $user): self
  34. {
  35. $this->andWhere('status = 1 AND (restricted_access = 0 OR (restricted_access = 1 AND (SELECT COUNT(*) FROM user_point_sale WHERE point_sale.id = user_point_sale.id_point_sale AND user_point_sale.id_user = :id_user) > 0))');
  36. $this->addParams([':id_user' => $user->id]);
  37. return $this;
  38. }
  39. }