src/Repository/MessengerMessagesRepository.php line 66

  1. <?php
  2. namespace App\Repository;
  3. use App\Entity\MessengerMessages;
  4. use Doctrine\Bundle\DoctrineBundle\Repository\ServiceEntityRepository;
  5. use Doctrine\Persistence\ManagerRegistry;
  6. /**
  7.  * @extends ServiceEntityRepository<MessengerMessage>
  8.  *
  9.  * @method MessengerMessage|null find($id, $lockMode = null, $lockVersion = null)
  10.  * @method MessengerMessage|null findOneBy(array $criteria, array $orderBy = null)
  11.  * @method MessengerMessage[]    findAll()
  12.  * @method MessengerMessage[]    findBy(array $criteria, array $orderBy = null, $limit = null, $offset = null)
  13.  */
  14. class MessengerMessagesRepository extends ServiceEntityRepository
  15. {
  16.     public function __construct(ManagerRegistry $registry)
  17.     {
  18.         parent::__construct($registryMessengerMessages::class);
  19.     }
  20.       /**
  21.      * Conta o número de mensagens pendentes (não entregues).
  22.      */
  23.     public function countPendingMessages(): int
  24.     {
  25.         return $this->createQueryBuilder('m')
  26.             ->select('count(m.id)')
  27.             ->where('m.delivered_at IS NULL')
  28.             ->getQuery()
  29.             ->getSingleScalarResult();
  30.     }
  31.     
  32.     
  33.      /**
  34.      * Busca mensagens pendentes de um usuário específico com base na string serializada.
  35.      */
  36.     public function findPendingMessagesByUser(int $userId): array
  37.     {
  38.         $pattern '%;i:' $userId ';s:8:%';
  39.         return $this->createQueryBuilder('m')
  40.             ->where('m.delivered_at IS NULL')
  41.             ->andWhere('m.body LIKE :pattern')
  42.             ->setParameter('pattern'$pattern)
  43.             ->orderBy('m.created_at''DESC')
  44.             ->getQuery()
  45.             ->getResult();
  46.     }
  47.     /**
  48.      * Conta as mensagens pendentes para um usuário específico.
  49.      */
  50.     public function countPendingMessagesByUser(int $userId): int
  51.     {
  52.         $pattern '%;i:' $userId ';s:8:%';
  53.         return $this->createQueryBuilder('m')
  54.             ->select('COUNT(m.id)')
  55.             ->where('m.delivered_at IS NULL')
  56.             ->andWhere('m.body LIKE :pattern')
  57.             ->setParameter('pattern'$pattern)
  58.             ->getQuery()
  59.             ->getSingleScalarResult();
  60.     }
  61. //    /**
  62. //     * @return MessengerMessage[] Returns an array of MessengerMessage objects
  63. //     */
  64. //    public function findByExampleField($value): array
  65. //    {
  66. //        return $this->createQueryBuilder('m')
  67. //            ->andWhere('m.exampleField = :val')
  68. //            ->setParameter('val', $value)
  69. //            ->orderBy('m.id', 'ASC')
  70. //            ->setMaxResults(10)
  71. //            ->getQuery()
  72. //            ->getResult()
  73. //        ;
  74. //    }
  75. //    public function findOneBySomeField($value): ?MessengerMessage
  76. //    {
  77. //        return $this->createQueryBuilder('m')
  78. //            ->andWhere('m.exampleField = :val')
  79. //            ->setParameter('val', $value)
  80. //            ->getQuery()
  81. //            ->getOneOrNullResult()
  82. //        ;
  83. //    }
  84. }