src/Repository/Offer/FoodOfferExtensionRepository.php line 64

Open in your IDE?
  1. <?php
  2. declare(strict_types=1);
  3. namespace Slivki\Repository\Offer;
  4. use Doctrine\Bundle\DoctrineBundle\Repository\ServiceEntityRepository;
  5. use Doctrine\Persistence\ManagerRegistry;
  6. use Slivki\Entity\FoodOfferExtension;
  7. use Slivki\Exception\FoodOfferExtensionNotFoundException;
  8. final class FoodOfferExtensionRepository extends ServiceEntityRepository implements FoodOfferExtensionRepositoryInterface
  9. {
  10.     public function __construct(ManagerRegistry $registry)
  11.     {
  12.         parent::__construct($registryFoodOfferExtension::class);
  13.     }
  14.     public function findById(int $id): ?FoodOfferExtension
  15.     {
  16.         $queryBuilder $this->createQueryBuilder('foe');
  17.         $expr $queryBuilder->expr();
  18.         return $queryBuilder
  19.             ->andWhere($expr->eq('foe.ID'':id'))
  20.             ->setParameter('id'$id)
  21.             ->getQuery()
  22.             ->getOneOrNullResult();
  23.     }
  24.     public function getById(int $id): FoodOfferExtension
  25.     {
  26.         $foodOfferExtension $this->findById($id);
  27.         if (!$foodOfferExtension instanceof FoodOfferExtension) {
  28.             throw new FoodOfferExtensionNotFoundException();
  29.         }
  30.         return $foodOfferExtension;
  31.     }
  32.     public function findActiveByOfferIdAndShippingType(int $offerIdint $shippingType): array
  33.     {
  34.         $queryBuilder $this->createQueryBuilder('foe');
  35.         $expr $queryBuilder->expr();
  36.         $queryBuilder
  37.             ->andWhere($expr->eq('foe.offer'':offerId'))
  38.             ->andWhere($expr->eq('foe.active'':isActive'))
  39.             ->setParameter('offerId'$offerId)
  40.             ->setParameter('isActive'true);
  41.         if (FoodOfferExtension::DELIVERY_METHOD === $shippingType) {
  42.             $queryBuilder->andWhere($expr->eq('foe.isDelivery'':isDelivery'))
  43.                 ->setParameter('isDelivery'true);
  44.         }
  45.         if (FoodOfferExtension::DELIVERY_METHOD_PICKUP === $shippingType) {
  46.             $queryBuilder->andWhere($expr->eq('foe.isPickup'':isPickup'))
  47.                 ->setParameter('isPickup'true);
  48.         }
  49.         return $queryBuilder
  50.             ->getQuery()
  51.             ->getResult();
  52.     }
  53.     public function findAllActiveByOfferId(int $offerId): array
  54.     {
  55.         $queryBuilder $this->createQueryBuilder('foe');
  56.         $expr $queryBuilder->expr();
  57.         return $queryBuilder
  58.             ->andWhere($expr->eq('foe.offer'':offerId'))
  59.             ->andWhere($expr->eq('foe.active'':isActive'))
  60.             ->setParameter('offerId'$offerId)
  61.             ->setParameter('isActive'true)
  62.             ->getQuery()
  63.             ->getResult();
  64.     }
  65. }