src/Repository/Product/AutoProductVariantRepository.php line 23

Open in your IDE?
  1. <?php
  2. namespace App\Repository\Product;
  3. use App\Entity\Booking\Cabin;
  4. use App\Entity\Booking\Quote;
  5. use App\Entity\Product\AutoProductVariant;
  6. use App\Repository\ApplicationFilterRepository;
  7. use Doctrine\Bundle\DoctrineBundle\Repository\ServiceEntityRepository;
  8. use Doctrine\Persistence\ManagerRegistry;
  9. use Exception;
  10. /**
  11.  * @method AutoProductVariant|null find($id, $lockMode = null, $lockVersion = null)
  12.  * @method AutoProductVariant|null findOneBy(array $criteria, array $orderBy = null)
  13.  * @method AutoProductVariant[]    findAll()
  14.  * @method AutoProductVariant[]    findBy(array $criteria, array $orderBy = null, $limit = null, $offset = null)
  15.  */
  16. class AutoProductVariantRepository extends ServiceEntityRepository
  17. {
  18.     public function __construct(ManagerRegistry $registry)
  19.     {
  20.         parent::__construct($registryAutoProductVariant::class);
  21.     }
  22.     const TYPE_PRICE_FIX "fixe";
  23.     const TYPE_PRICE_BY_DAY "byDay";
  24.     const TYPE_PRICE_BY_NIGHT "byNight";
  25.     const ATTRIBUTION_CABIN "cabin";
  26.     const ATTRIBUTION_PASSENGER "passenger";
  27.     const SPECIFICITY_INCLUDED "included";
  28.     const SPECIFICITY_NOT_INCLUDED "notIncluded";
  29.     const SPECIFICITY_OFFERED "offered";
  30.     /**
  31.      * @throws Exception
  32.      */
  33.     public function findByQuoteAndCabin(Quote $quoteCabin $cabin)
  34.     {
  35.         $qb $this->createQueryBuilder('apv')->innerJoin('apv.applicationFilter''af');
  36.         $qb ApplicationFilterRepository::addApplicationFilterQueryBuilderForObject($qb$quote);
  37.         $qb ApplicationFilterRepository::addApplicationFilterQueryBuilderForCruiseHistory($qb$quote->getCruiseHistory());
  38.         $qb ApplicationFilterRepository::addApplicationFilterQueryBuilderForCabin($qb$cabin);
  39.         return $qb->getQuery()->getResult();
  40.     }
  41.     public function findActives(): array
  42.     {
  43.         $qb $this->createQueryBuilder('apv');
  44.         return $qb
  45.             ->join('apv.applicationFilter''af')
  46.             ->where($qb->expr()->eq('af.active'true))
  47.             ->andWhere($qb->expr()->orX(
  48.                 $qb->expr()->isNull('af.applicationDateEnd'),
  49.                 $qb->expr()->gte('af.applicationDateEnd'':now')
  50.             ))
  51.             ->setParameter('now', new \DateTime())
  52.             ->getQuery()
  53.             ->getResult();
  54.     }
  55. }