src/Repository/EStateAdRepository.php line 34

Open in your IDE?
  1. <?php
  2. namespace App\Repository;
  3. use App\Entity\EStateAd;
  4. use Doctrine\Bundle\DoctrineBundle\Repository\ServiceEntityRepository;
  5. use Doctrine\Common\Persistence\ManagerRegistry;
  6. use Doctrine\ORM\Query;
  7. use Doctrine\ORM\Query\ResultSetMapping;
  8. /**
  9.  * @method EStateAd|null find($id, $lockMode = null, $lockVersion = null)
  10.  * @method EStateAd|null findOneBy(array $criteria, array $orderBy = null)
  11.  * @method EStateAd[]    findAll()
  12.  * @method EStateAd[]    findBy(array $criteria, array $orderBy = null, $limit = null, $offset = null)
  13.  */
  14. class EStateAdRepository extends ServiceEntityRepository
  15. {
  16.     public function __construct(ManagerRegistry $registry)
  17.     {
  18.         parent::__construct($registryEStateAd::class);
  19.     }
  20.     
  21.     public function getHomeAds()
  22.     {
  23.         return $query $this->createQueryBuilder('e')
  24.             ->innerJoin('e.owner_id''a')
  25.             ->addSelect('a')
  26.             ->where('e.status > 0')
  27.             ->andWhere('e.is_home_display = 1')
  28.             ->orderBy('e.created_at''DESC')
  29.             ->setMaxResults(2)
  30.             ->getQuery()
  31.             ->getResult()
  32.         ;
  33.     }
  34.     
  35.     public function getListing()
  36.     {
  37.         return $query $this->createQueryBuilder('e')
  38.             ->innerJoin('e.owner_id''a')
  39.             ->addSelect('a')
  40.             ->where('e.status > 0')
  41.             ->orderBy('e.mandate_type''ASC')
  42.             ->addOrderBy('e.created_at''DESC')
  43.             ->getQuery()
  44.             ->getResult()
  45.         ;
  46.     }
  47.     
  48.     public function getStringListing()
  49.     {
  50.         return $query $this->createQueryBuilder('e')
  51.             ->innerJoin('e.owner_id''a')
  52.             ->addSelect('a')
  53.             ->where('e.status > 0')
  54.             ->orderBy('e.mandate_type''ASC')
  55.             ->addOrderBy('e.created_at''DESC')
  56.             ->getQuery()
  57.             ->getArrayResult()
  58.         ;
  59.     }
  60.     
  61.     public function getTotalAdsNb()
  62.     {
  63.         return $this->createQueryBuilder('e')
  64.             ->where('e.status > 0')
  65.             ->getQuery()
  66.             ->getResult()
  67.             ->count()
  68.         ;
  69.     }
  70.     
  71.     public function getNbAdsByAgencyId($ownerId)
  72.     {
  73.         return $this->createQueryBuilder('e')
  74.             ->select('count(e.id)')
  75.             ->where('e.status = 1')
  76.             ->andWhere('e.owner_id = :ownerId')
  77.             ->setParameter('ownerId'$ownerId)
  78.             ->orderBy('e.created_at''DESC')
  79.             ->getQuery()
  80.             ->getSingleScalarResult()
  81.         ;
  82.     }
  83.     
  84.     public function getNbExclAdsByAgencyId($ownerId)
  85.     {
  86.         return $this->createQueryBuilder('e')
  87.             ->select('count(e.id)')
  88.             ->where('e.status = 1')
  89.             ->andWhere('e.mandate_type = 0')
  90.             ->andWhere('e.owner_id = :ownerId')
  91.             ->setParameter('ownerId'$ownerId)
  92.             ->orderBy('e.created_at''DESC')
  93.             ->getQuery()
  94.             ->getSingleScalarResult()
  95.         ;
  96.     }
  97.     
  98.     public function getNbSuboffersByAgencyId($ownerId)
  99.     {
  100.         return $this->createQueryBuilder('e')
  101.             ->select('count(e.id)')
  102.             ->where('e.status = 3')
  103.             ->andWhere('e.owner_id = :ownerId')
  104.             ->setParameter('ownerId'$ownerId)
  105.             ->orderBy('e.created_at''DESC')
  106.             ->getQuery()
  107.             ->getSingleScalarResult()
  108.         ;
  109.     }
  110.     
  111.     public function getExpiredAds()
  112.     {
  113.         return $this->createQueryBuilder('e')
  114.             ->where('e.mandate_type <= 1')
  115.             ->andWhere('e.expiration_date <= :now')
  116.             ->setParameter('now', new \DateTime('now', new \DateTimeZone('Europe/Paris')))
  117.             ->getQuery()
  118.             ->getResult()
  119.         ;
  120.     }
  121.     
  122.     public function getFilteredListing($data)
  123.     {
  124.         $cities = [];
  125.         if(isset($data['search_field']) && "" !== $data['search_field']){
  126.             $tagify json_decode($data['search_field']);
  127.             
  128.             foreach($tagify as $city){
  129.                 array_push($cities$city->value);
  130.             }
  131.         }
  132.         $entityManager $this->getEntityManager();
  133.         
  134.         $sql "";
  135.         
  136.         foreach($cities as $key => $city){
  137.             $sql .= " WHERE e.city = :city".$key." ";
  138.         }
  139.         $query $this->createQueryBuilder('e')
  140.             ->innerJoin('e.owner_id''a')
  141.             ->addSelect('a')
  142.             ->where('e.city = :city')
  143.             ->andWhere('e.status > 0')
  144.             ->setParameter('city''Paris');
  145.         /*$query = $entityManager->createQuery(
  146.             'SELECT e, a
  147.             FROM App\Entity\EStateAd e
  148.             INNER JOIN e.owner_id a' . $sql
  149.         );
  150.         
  151.         dd('SELECT e, a
  152.             FROM App\Entity\EStateAd e
  153.             INNER JOIN e.owner_id a' . $sql);*/
  154.         return $query->getQuery()->getResult();
  155.     }
  156.     
  157.     public function findOneByReference($ref)
  158.     {
  159.         return $this->createQueryBuilder('e')
  160.             ->where('e.reference = :ref')
  161.             ->setParameter('ref'$ref)
  162.             ->getQuery()
  163.             ->getSingleResult()
  164.         ;
  165.     }
  166.     
  167.     public function findByIds($ids)
  168.     {
  169.         $qb $this->createQueryBuilder('e');
  170.         return $qb
  171.             ->where($qb->expr()->in('e.id'$ids))
  172.             ->getQuery()
  173.             ->getResult()
  174.         ;
  175.     }
  176.     // /**
  177.     //  * @return EStateAd[] Returns an array of EStateAd objects
  178.     //  */
  179.     /*
  180.     public function findByExampleField($value)
  181.     {
  182.         return $this->createQueryBuilder('e')
  183.             ->andWhere('e.exampleField = :val')
  184.             ->setParameter('val', $value)
  185.             ->orderBy('e.id', 'ASC')
  186.             ->setMaxResults(10)
  187.             ->getQuery()
  188.             ->getResult()
  189.         ;
  190.     }
  191.     */
  192.     /*
  193.     public function findOneBySomeField($value): ?EStateAd
  194.     {
  195.         return $this->createQueryBuilder('e')
  196.             ->andWhere('e.exampleField = :val')
  197.             ->setParameter('val', $value)
  198.             ->getQuery()
  199.             ->getOneOrNullResult()
  200.         ;
  201.     }
  202.     */
  203. }