<?php namespace Lc\ShopBundle\Repository; use Doctrine\Bundle\DoctrineBundle\Repository\ServiceEntityRepository; use Doctrine\Persistence\ManagerRegistry; use Lc\ShopBundle\Context\DefaultRepositoryInterface; use Lc\ShopBundle\Context\TicketInterface; use Lc\ShopBundle\Context\UnitInterface; use Lc\ShopBundle\Model\Ticket; use Lc\ShopBundle\Repository\BaseRepository; /** * @method TicketInterface|null find($id, $lockMode = null, $lockVersion = null) * @method TicketInterface|null findOneBy(array $criteria, array $orderBy = null) * @method TicketInterface[] findAll() * @method TicketInterface[] findBy(array $criteria, array $orderBy = null, $limit = null, $offset = null) */ class TicketRepository extends BaseRepository implements DefaultRepositoryInterface { public function getInterfaceClass() { return TicketInterface::class; } public function filterStatus($query, $statusArray) { $query->andWhere('e.status IN (:status)')->setParameter('status', $statusArray) ; return $query ; } public function findAllOpen() { $query = $this->findByMerchantQuery() ; $this->filterStatus($query, [Ticket::TICKET_STATUS_OPEN, Ticket::TICKET_STATUS_BEING_PROCESSED]) ; $query->addOrderBy('e.id', 'DESC') ; return $query->getQuery()->getResult() ; } public function countAllOpen() { $query = $this->findByMerchantQuery() ; $query->select('count(e.id)'); $this->filterStatus($query, [Ticket::TICKET_STATUS_OPEN, Ticket::TICKET_STATUS_BEING_PROCESSED]) ; return $query->getQuery()->getSingleScalarResult() ; } }