src/Repository/ReviewsRepository.php line 46

Open in your IDE?
  1. <?php
  2. namespace App\Repository;
  3. use App\Entity\Reviews;
  4. use App\Entity\User;
  5. use Doctrine\Bundle\DoctrineBundle\Repository\ServiceEntityRepository;
  6. use Doctrine\Persistence\ManagerRegistry;
  7. /**
  8.  * @method Reviews|null find($id, $lockMode = null, $lockVersion = null)
  9.  * @method Reviews|null findOneBy(array $criteria, array $orderBy = null)
  10.  * @method Reviews[]    findAll()
  11.  * @method Reviews[]    findBy(array $criteria, array $orderBy = null, $limit = null, $offset = null)
  12.  */
  13. class ReviewsRepository extends ServiceEntityRepository
  14. {
  15.     public function __construct(ManagerRegistry $registry)
  16.     {
  17.         parent::__construct($registryReviews::class);
  18.     }
  19.     public function findFirstYearOfReview($user) {
  20.         return $this->createQueryBuilder('r')
  21.             ->andWhere('r.user = :user'
  22.             ->setParameter('user'$user)
  23.             ->orderBy('r.created_at''ASC')
  24.             ->getQuery()
  25.             ->setMaxResults(1)
  26.             ->getResult()
  27.         ;
  28.     }
  29.     public function findLastThirtyDaysReviews($user){
  30.         return $this->createQueryBuilder('r')
  31.             ->andWhere('r.user = :user')
  32.             ->andWhere('r.created_at > :m_date')
  33.             ->setParameter('user'$user)
  34.             ->setParameter('m_date', new \DateTime('-30 days'))
  35.             ->orderBy('r.created_at''DESC')
  36.             ->getQuery()
  37.             ->getResult()
  38.         ;
  39.     }
  40.     public function findAdminReviewsFilter($dateFilter null$admin){
  41.         if($dateFilter !== null){
  42.             return $this->createQueryBuilder('r')
  43.                 ->innerJoin('r.user''u')
  44.                 ->andWhere('u.owner = :admin')
  45.                 ->andWhere('r.created_at >= :m_date')
  46.                 ->setParameter('admin'$admin)
  47.                 ->setParameter('m_date', new \DateTime($dateFilter))
  48.                 ->orderBy('r.created_at''DESC')
  49.                 ->getQuery()
  50.                 ->getResult()
  51.             ;
  52.         }else{
  53.             return $this->createQueryBuilder('r')
  54.                 ->innerJoin('r.user''u')
  55.                 ->andWhere('u.owner = :admin')
  56.                 ->andWhere('r.created_at >= :m_date')
  57.                 ->setParameter('admin'$admin)
  58.                 ->setParameter('m_date', new \DateTime('-24 hours'))
  59.                 ->orderBy('r.created_at''DESC')
  60.                 ->getQuery()
  61.                 ->getResult()
  62.             ;
  63.         }
  64.     }
  65.     public function findProfessionalsReviews($admin){
  66.         return $this->createQueryBuilder('r')
  67.             ->innerJoin('r.user''u')
  68.             ->andWhere('u.owner = :admin')
  69.             ->setParameter('admin'$admin)
  70.             ->orderBy('r.created_at''DESC')
  71.             ->setMaxResults(10)
  72.             ->getQuery()
  73.             ->getResult()
  74.         ;
  75.     }
  76.     public function findTopReviewsOfTheMonth($user$date)
  77.     {
  78.         return $this->createQueryBuilder('r'
  79.             ->andWhere('r.user = :user')
  80.             ->andWhere('MONTH(r.created_at) = :month')
  81.             ->andWhere('YEAR(r.created_at) = :year'
  82.             ->setParameter('month'$date['month'])
  83.             ->setParameter('year'$date['year'])
  84.             ->setParameter('user'$user)
  85.             ->orderBy('r.star_rating''DESC'
  86.             ->getQuery()
  87.             ->getResult()
  88.         ;
  89.     }
  90.     public function findConcernedProfessionals(string $dateFilter nullUser $current_user)
  91.     {
  92.         if($dateFilter !== null){
  93.             return $this->createQueryBuilder('r')
  94.                 ->innerJoin('r.user''u')
  95.                 ->andWhere('u.owner = :user')
  96.                 ->andWhere('r.created_at > :date')
  97.                 ->setParameter('user'$current_user)
  98.                 ->setParameter('date', new \DateTime($dateFilter))
  99.                 ->orderBy('r.created_at''DESC')
  100.                 ->getQuery()
  101.                 ->getResult()
  102.             ;
  103.         }else{
  104.             return $this->createQueryBuilder('u')
  105.                 ->orderBy('r.created_at''DESC')
  106.                 ->getQuery()
  107.                 ->getResult()
  108.             ;
  109.         }
  110.     }
  111.     // /**
  112.     //  * @return Reviews[] Returns an array of Reviews objects
  113.     //  */
  114.     /*
  115.     public function findByExampleField($value)
  116.     {
  117.         return $this->createQueryBuilder('r')
  118.             ->andWhere('r.exampleField = :val')
  119.             ->setParameter('val', $value)
  120.             ->orderBy('r.id', 'ASC')
  121.             ->setMaxResults(10)
  122.             ->getQuery()
  123.             ->getResult()
  124.         ;
  125.     }
  126.     */
  127.     /*
  128.     public function findOneBySomeField($value): ?Reviews
  129.     {
  130.         return $this->createQueryBuilder('r')
  131.             ->andWhere('r.exampleField = :val')
  132.             ->setParameter('val', $value)
  133.             ->getQuery()
  134.             ->getOneOrNullResult()
  135.         ;
  136.     }
  137.     */
  138. }