<?php
namespace App\Repository;
use App\Entity\Conversation;
use Doctrine\Bundle\DoctrineBundle\Repository\ServiceEntityRepository;
use Doctrine\Persistence\ManagerRegistry;
/**
* @method Conversation|null find($id, $lockMode = null, $lockVersion = null)
* @method Conversation|null findOneBy(array $criteria, array $orderBy = null)
* @method Conversation[] findAll()
* @method Conversation[] findBy(array $criteria, array $orderBy = null, $limit = null, $offset = null)
*/
class ConversationRepository extends ServiceEntityRepository
{
public function __construct(ManagerRegistry $registry)
{
parent::__construct($registry, Conversation::class);
}
public function findAdminUnseenConversations($user)
{
return $this->createQueryBuilder('c')
->andWhere('c.user_two = :user')
->andWhere('c.user_two_status = 0')
->setParameter('user', $user)
->getQuery()
->getResult();
}
public function findProfessionalUnseenMessages($user)
{
return $this->createQueryBuilder('c')
->andWhere('c.user_one = :user')
->andWhere('c.user_one_status = 0')
->setParameter('user', $user)
->getQuery()
->getResult();
}
public function findConversation($user)
{
return $this->createQueryBuilder('c')
->andWhere('c.user_one = :user_one AND c.user_two = :user_two')
->orWhere('c.user_one = :user_two AND c.user_two = :user_one')
->setParameter('user_one', $user)
->setParameter('user_two', $user->getOwner())
->orderBy('c.id', 'ASC')
->setMaxResults(1)
->getQuery()
->getResult()
;
}
public function findAdminConversation($user)
{
return $this->createQueryBuilder('c')
->innerJoin('c.conversationReplies', 'r')
->andWhere('c.user_one = :user')
->orWhere('c.user_two = :user')
->setParameter('user', $user)
->orderBy('r.created_at', 'ASC')
->getQuery()
->getResult()
;
}
// /**
// * @return Conversation[] Returns an array of Conversation objects
// */
/*
public function findByExampleField($value)
{
return $this->createQueryBuilder('c')
->andWhere('c.exampleField = :val')
->setParameter('val', $value)
->orderBy('c.id', 'ASC')
->setMaxResults(10)
->getQuery()
->getResult()
;
}
*/
/*
public function findOneBySomeField($value): ?Conversation
{
return $this->createQueryBuilder('c')
->andWhere('c.exampleField = :val')
->setParameter('val', $value)
->getQuery()
->getOneOrNullResult()
;
}
*/
}