src/Repository/SupplierCustomerRepository.php line 12

Open in your IDE?
  1. <?php
  2. namespace App\Repository;
  3. use App\Entity\Supplier;
  4. use App\Entity\SupplierCustomer;
  5. use DateTime;
  6. use Doctrine\ORM\EntityManagerInterface;
  7. class SupplierCustomerRepository extends GeneralRepository
  8. {
  9.     public function __construct(EntityManagerInterface $em)
  10.     {
  11.         parent::__construct($em$em->getClassMetadata(SupplierCustomer::class));
  12.         $this->setLetter('sc');
  13.         $this->setDefaultSort([
  14.             'field' => 'createdAt',
  15.             'order' => 'DESC'
  16.         ]);
  17.         $this->setDefaultLimit(10);
  18.     }
  19.     public function setSearchParams($params)
  20.     {
  21.         parent::setSearchParams($params);
  22.         //        $isPartner = ( isset( $params['partner'] ) ) ? $params['partner'] : false;
  23.         //        $this->partner( $isPartner );
  24.         if (isset($params['supplierStatus'])) {
  25.             $this->supplierStatus($params['supplierStatus']);
  26.         }
  27.         if (isset($params['partnerOnly'])) {
  28.             if ($params['partnerOnly']) {
  29.                 $this->partnerOnly();
  30.             }
  31.         }
  32.         if (isset($params['guestOnly'])) {
  33.             if ($params['guestOnly']) {
  34.                 $this->guestOnly();
  35.             }
  36.         }
  37.         if (isset($params['customer'])) {
  38.             $this->qb
  39.                 ->andWhere($this->letter '.customer = :customer')
  40.                 ->setParameter(':customer'$params['customer']);
  41.         }
  42.         if (isset($params['customers'])) {
  43.             $this->qb
  44.                 ->andWhere($this->letter '.customer IN (:customers)')
  45.                 ->setParameter(':customers'$params['customers']);
  46.         }
  47.         if (isset($params['supplier'])) {
  48.             $this->qb
  49.                 ->andWhere($this->letter '.supplier = :supplier')
  50.                 ->setParameter(':supplier'$params['supplier']);
  51.         }
  52.         if (isset($params['suppliers'])) {
  53.             $this->qb
  54.                 ->andWhere($this->letter '.supplier IN (:suppliers)')
  55.                 ->setParameter(':suppliers'$params['suppliers']);
  56.         }
  57.         if (isset($params['adherentNumber'])) {
  58.             $this->qb
  59.                 ->andWhere($this->letter '.adherentNumber = :adherentNumber')
  60.                 ->setParameter(':adherentNumber'$params['adherentNumber']);
  61.         }
  62.         if (isset($params['deliveryModel'])) {
  63.             $this->qb
  64.                 ->andWhere($this->letter '.deliveryModel = :deliveryModel')
  65.                 ->setParameter(':deliveryModel'$params['deliveryModel']);
  66.         }
  67.         if (isset($params['createdBefore'])) {
  68.             $this->createdBefore($params['createdBefore']);
  69.         }
  70.         if (isset($params['adherentNumber' ])) {
  71.             $this->adherentNumber($params['adherentNumber']);
  72.         }
  73.     }
  74.     private function adherentNumber($adherentNumber)
  75.     {
  76.         $this->qb
  77.             ->andWhere($this->letter '.adherentNumber = :adherentNumber')
  78.             ->setParameter('adherentNumber'$adherentNumber);
  79.     }
  80.     private function createdBefore(DateTime $date)
  81.     {
  82.         $day = clone $date;
  83.         $day->setTime(235959);
  84.         $this->qb
  85.             ->andWhere($this->letter '.createdAt <= :date')
  86.             ->setParameter('date'$day);
  87.     }
  88.     /**
  89.      * @param $id
  90.      *
  91.      * @return array
  92.      */
  93.     public function findOneEnabledById($id)
  94.     {
  95.         $query $this->createQueryBuilder('sc')
  96.                       ->join('sc.supplier''s')
  97.                       ->where('s.enabled = :enabled')
  98.                       ->andWhere('sc.id = :id')
  99.                       ->setParameter('id'$id)
  100.                       ->setParameter('enabled'true);
  101.         return $query->getQuery()->getResult();
  102.     }
  103.     private function supplierStatus($supplierStatus)
  104.     {
  105.         $this->qb
  106.             ->join($this->letter '.supplier''s')
  107.             ->andWhere('s.status = :supplierStatus')
  108.             ->setParameter(':supplierStatus'$supplierStatus);
  109.     }
  110.     private function partnerOnly()
  111.     {
  112.         $this->qb
  113.             ->join($this->letter '.supplier''s')
  114.             ->andWhere("s.status = '" Supplier::STATUS_PARTNER "'");
  115.     }
  116.     private function guestOnly()
  117.     {
  118.         $this->qb
  119.             ->join($this->letter '.supplier''s');
  120.         $this->qb
  121.             ->andWhere("s.status IN ('" Supplier::STATUS_UNTRUSTED "', '" Supplier::STATUS_TRUSTED "')");
  122.     }
  123. }