src/Repository/VehicleModelRepository.php line 87

  1. <?php
  2. namespace App\Repository;
  3. use App\Entity\BlogKind;
  4. use App\Entity\Dealer;
  5. use App\Entity\VehicleCategory;
  6. use App\Entity\VehicleKind;
  7. use App\Entity\VehicleManufacturer;
  8. use App\Entity\VehicleModel;
  9. use Doctrine\Bundle\DoctrineBundle\Repository\ServiceEntityRepository;
  10. use Doctrine\Persistence\ManagerRegistry;
  11. /**
  12.  * @extends ServiceEntityRepository<VehicleModel>
  13.  *
  14.  * @method VehicleModel|null find($id, $lockMode = null, $lockVersion = null)
  15.  * @method VehicleModel|null findOneBy(array $criteria, array $orderBy = null)
  16.  * @method VehicleModel[]    findAll()
  17.  * @method VehicleModel[]    findBy(array $criteria, array $orderBy = null, $limit = null, $offset = null)
  18.  */
  19. class VehicleModelRepository extends ServiceEntityRepository
  20. {
  21.     public function __construct(ManagerRegistry $registry)
  22.     {
  23.         parent::__construct($registryVehicleModel::class);
  24.     }
  25.     public function save(VehicleModel $entitybool $flush false): void
  26.     {
  27.         $this->getEntityManager()->persist($entity);
  28.         if ($flush) {
  29.             $this->getEntityManager()->flush();
  30.         }
  31.     }
  32.     public function remove(VehicleModel $entitybool $flush false): void
  33.     {
  34.         $this->getEntityManager()->remove($entity);
  35.         if ($flush) {
  36.             $this->getEntityManager()->flush();
  37.         }
  38.     }
  39.     /**
  40.      * @return VehicleModel[]  Returns an array of VehicleCategory objects
  41.      */
  42.     public function findActiveVehicleManufacturer $manufacturer =  null,
  43.                                 VehicleCategory $vehicleCategory nullVehicleKind  $vehicleKind null): array
  44.     {
  45.        $return =  $this->createQueryBuilder('vm')
  46.             ->leftJoin('vm.vehicles''vehicles')
  47.             ->andWhere('vehicles.visible = true')
  48.             ->leftJoin('vehicles.dealer''dealer')
  49.             ->andWhere('dealer.visible = true');
  50.         if( $manufacturer ) {
  51.             $return
  52.                 ->andWhere('vehicles.manufacturer = :manufacturer')
  53.                 ->setParameter('manufacturer'$manufacturer);
  54.         }
  55.         if( $vehicleCategory ) {
  56.             $return
  57.                 ->andWhere('vehicles.category = :vehicleCategory')
  58.                 ->setParameter('vehicleCategory'$vehicleCategory);
  59.         }
  60.         if( $vehicleKind ) {
  61.             $return
  62.                 ->andWhere('vehicles.kind = :vehicleKind')
  63.                 ->setParameter('vehicleKind'$vehicleKind);
  64.         }
  65.         return   $return
  66.             ->orderBy('vm.name''ASC')
  67.             ->getQuery()
  68.             ->getResult();
  69.     }
  70.     /**
  71.      * @return VehicleModel[] Returns an array of VehicleManufacturer objects
  72.      */
  73.     public function findByDealerActive(Dealer $dealerint $manufacturerId =  null): array
  74.     {
  75.         $return =  $this->createQueryBuilder('vm')
  76.             ->leftJoin('vm.vehicles''v')
  77.             ->andWhere('v.dealer = :dealer')
  78.             ->andWhere('v.visible = true')
  79.             ->setParameter('dealer'$dealer);
  80.         if(isset($manufacturerId)) {
  81.             $return->andWhere('vm.vehicleManufacturer = :manufacturer')
  82.                 ->setParameter('manufacturer'$manufacturerId);
  83.         }
  84.       return  $return ->orderBy('vm.name''ASC')
  85.             ->getQuery()
  86.             ->getResult();
  87.     }
  88.     public function findName(string $name): ?VehicleModel
  89.     {
  90.         return $this->createQueryBuilder('v')
  91.             ->andWhere('v.name LIKE :name')
  92.             ->setParameter('name''%'.$name.'%')
  93.             ->setMaxResults(1)
  94.             ->getQuery()
  95.             ->getOneOrNullResult();
  96.     }
  97.     /**
  98.      * @return VehicleModel[]
  99.      */
  100.     public function findByManufacturerAndBlogKind(VehicleManufacturer $manufacturerBlogKind $blogKind): array
  101.     {
  102.         return $this->createQueryBuilder('vm')
  103.             ->leftJoin('vm.blogs''b')
  104.             ->leftJoin('b.kinds''bk')
  105.             ->andWhere('bk = :blogKind')
  106.             ->andWhere('vm.vehicleManufacturer = :manufacturer')
  107.             ->andWhere('b.visible = true')
  108.             ->setParameter('blogKind'$blogKind)
  109.             ->setParameter('manufacturer'$manufacturer)
  110.             ->orderBy('vm.name''ASC')
  111.             ->getQuery()
  112.             ->getResult();
  113.     }
  114. }