public function getConversations(MessageUserInterface $user) { $builder = $this->createQueryBuilder('conversation')->innerJoin('conversation.participants', 'participants', 'WITH', 'participants.id = :userId')->setParameter('userId', $user->getId()); return new ZendPaginator(new DoctrinePaginator(new Paginator($builder->getQuery()))); }
public function getMessagesAssociatedWith(MessageUserInterface $user) { $builder = $this->createQueryBuilder('messages'); $builder->leftJoin('messages.conversation', 'conversation')->leftJoin('conversation.participants', 'participants')->andWhere($builder->expr()->in('participants', [$user->getId()]))->orderBy('messages.createdAt', 'DESC'); return new ZendPaginator(new DoctrinePaginator(new Paginator($builder->getQuery()))); }
public function markAsReadByUser(MessageEntity $message, MessageUserInterface $user) { MessageEntity::readByUser($message, new ReadByUserEntry($user->getId(), new DateTime())); $this->objectManager->flush(); $this->getEventManager()->trigger(self::EVENT_READ_BY_USER, $this, ['message' => $message]); }