You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

79 lines
2.0KB

  1. <?php
  2. namespace Lc\SovBundle\Repository\Ticket;
  3. use App\Entity\Ticket\Ticket;
  4. use Lc\SovBundle\Model\User\UserInterface;
  5. use Lc\SovBundle\Repository\AbstractStore;
  6. use Lc\SovBundle\Repository\RepositoryQueryInterface;
  7. class TicketStore extends AbstractStore implements TicketStoreInterface
  8. {
  9. protected TicketRepositoryQueryInterface $query;
  10. public function __construct(TicketRepositoryQueryInterface $query)
  11. {
  12. $this->query = $query;
  13. }
  14. public function orderByDefault(RepositoryQueryInterface $query): RepositoryQueryInterface
  15. {
  16. $query->orderBy('updatedAt', 'DESC');
  17. return $query;
  18. }
  19. public function filtersDefault(RepositoryQueryInterface $query): RepositoryQueryInterface
  20. {
  21. return $query;
  22. }
  23. public function relationsDefault(RepositoryQueryInterface $query): RepositoryQueryInterface
  24. {
  25. return $query;
  26. }
  27. // getTicketsByUser
  28. public function getByUser(UserInterface $user, $query = null): array
  29. {
  30. $query = $this->createDefaultQuery($query);
  31. $query->filterByUser($user);
  32. return $query->find();
  33. }
  34. // findAllOpen
  35. public function getOpen(int $limit = 0, $query = null): array
  36. {
  37. $query = $this->createDefaultQuery($query);
  38. $query
  39. ->filterByStatus(Ticket::TICKET_STATUS_OPEN)
  40. ->limit($limit)
  41. ->orderBy('.id', 'DESC');
  42. return $query->find();
  43. }
  44. // countAllOpen
  45. public function countOpen($query = null): string
  46. {
  47. $query = $this->createDefaultQuery($query);
  48. $query
  49. ->selectCount()
  50. ->filterByStatus(Ticket::TICKET_STATUS_OPEN);
  51. return $query->count();
  52. }
  53. public function getOneByIdAndVisitorToken(int $id, string $token, $query = null)
  54. {
  55. $query = $this->createDefaultQuery($query);
  56. $query
  57. ->filterById($id)
  58. ->filterByVisitorToken($token);
  59. return $query->findOne();
  60. }
  61. }