src/Repository/NotificationReceiptRepository.php line 24

Open in your IDE?
  1. <?php
  2. namespace App\Repository;
  3. use App\Entity\NotificationReceipt;
  4. use App\Entity\User;
  5. use Doctrine\Bundle\DoctrineBundle\Repository\ServiceEntityRepository;
  6. use Doctrine\ORM\NonUniqueResultException;
  7. use Doctrine\ORM\NoResultException;
  8. use Doctrine\Persistence\ManagerRegistry;
  9. /**
  10.  * @extends ServiceEntityRepository<NotificationReceipt>
  11.  *
  12.  * @method NotificationReceipt|null find($id, $lockMode = null, $lockVersion = null)
  13.  * @method NotificationReceipt|null findOneBy(array $criteria, array $orderBy = null)
  14.  * @method NotificationReceipt[]    findAll()
  15.  * @method NotificationReceipt[]    findBy(array $criteria, array $orderBy = null, $limit = null, $offset = null)
  16.  */
  17. class NotificationReceiptRepository extends ServiceEntityRepository
  18. {
  19.     public function __construct(ManagerRegistry $registry)
  20.     {
  21.         parent::__construct($registryNotificationReceipt::class);
  22.     }
  23.     public function add(NotificationReceipt $entitybool $flush false): void
  24.     {
  25.         $this->getEntityManager()->persist($entity);
  26.         if ($flush) {
  27.             $this->getEntityManager()->flush();
  28.         }
  29.     }
  30.     public function remove(NotificationReceipt $entitybool $flush false): void
  31.     {
  32.         $this->getEntityManager()->remove($entity);
  33.         if ($flush) {
  34.             $this->getEntityManager()->flush();
  35.         }
  36.     }
  37.     public function getUnreadNotificationsCount(User $user): int
  38.     {
  39.         $alias 'notification_receipt';
  40.         $queryBuilder $this->createQueryBuilder($alias);
  41.         $queryBuilder
  42.             ->select('count('.$alias.'.id)')
  43.             ->andWhere($alias.'.user = :user')
  44.             ->andWhere($queryBuilder->expr()->isNull($alias.'.readAt'))
  45.             ->setParameter('user'$user)
  46.         ;
  47.         try {
  48.             return $queryBuilder->getQuery()->getSingleScalarResult();
  49.         } catch (NoResultException|NonUniqueResultException $e) {
  50.             return 0;
  51.         }
  52.     }
  53. }