src/Repository/Raport/OpeningLineRepository.php line 43

Open in your IDE?
  1. <?php
  2. namespace App\Repository\Raport;
  3. use App\Entity\Raport\OpeningLine;
  4. use Doctrine\Bundle\DoctrineBundle\Repository\ServiceEntityRepository;
  5. use Doctrine\Persistence\ManagerRegistry;
  6. use App\Pagination\Paginator;
  7. use Proxies\__CG__\App\Entity\Raport\Opening;
  8. /**
  9.  * @extends ServiceEntityRepository<OpeningLine>
  10.  *
  11.  * @method OpeningLine|null find($id, $lockMode = null, $lockVersion = null)
  12.  * @method OpeningLine|null findOneBy(array $criteria, array $orderBy = null)
  13.  * @method OpeningLine[]    findAll()
  14.  * @method OpeningLine[]    findBy(array $criteria, array $orderBy = null, $limit = null, $offset = null)
  15.  */
  16. class OpeningLineRepository extends ServiceEntityRepository
  17. {
  18.     public function __construct(ManagerRegistry $registry)
  19.     {
  20.         parent::__construct($registryOpeningLine::class);
  21.     }
  22.     public function add(OpeningLine $entitybool $flush false): void
  23.     {
  24.         $this->getEntityManager()->persist($entity);
  25.         if ($flush) {
  26.             $this->getEntityManager()->flush();
  27.         }
  28.     }
  29.     public function remove(OpeningLine $entitybool $flush false): void
  30.     {
  31.         $this->getEntityManager()->remove($entity);
  32.         if ($flush) {
  33.             $this->getEntityManager()->flush();
  34.         }
  35.     }
  36.     public function findOpeningLines(int $page 1, array $sort, array $querys$doc$last): Paginator
  37.     {
  38.         if (isset($sort['request']) && $sort['request'] != null) {
  39.             $qb $this->createQueryBuilder('p')->orderBy('p.' $sort['request'], $sort[$sort['request']]);
  40.         } else {
  41.             $qb $this->createQueryBuilder('p')->orderBy('p.id''DESC');
  42.         }
  43.         if ($last) {
  44.             $key "opening";
  45.             $qb_id $this->createQueryBuilder('i')->orderBy('i.id''DESC')->setMaxResults(1);
  46.             $qb_id ->leftJoin(Opening::class, 'e''WITH''e.id = i.opening');
  47.             if ('checked' == $doc['doc_close'] && '' == $doc['doc_open']) {
  48.                 $doc_key 'status_document';
  49.                 $query 'Close';
  50.                 $qb_id->andwhere('e.'.$doc_key.' LIKE :'.$doc_key)->setParameter($doc_key'%'.$query.'%');
  51.             }
  52.             if ('' == $doc['doc_close'] && 'checked' == $doc['doc_open']) {
  53.                 $doc_key 'status_document';
  54.                 $query 'Open';
  55.                 $qb_id->andwhere('e.'.$doc_key.' LIKE :'.$doc_key)->setParameter($doc_key'%'.$query.'%');
  56.             }
  57.             $result$qb_id->getQuery()->getResult() ;
  58.             $query $result[0]->getOpening()->getId();
  59.             // dump($query);
  60.             $qb->andwhere('LOWER(CAST(p.'.$key.' AS STRING)) LIKE LOWER(:'.$key.')')->setParameter($key'%'.$query.'%');
  61.             $qb->leftJoin(Opening::class, 'd''WITH''d.id = p.opening');
  62.         } else {
  63.             $qb->leftJoin(Opening::class, 'd''WITH''d.id = p.opening');
  64.         }
  65.         if (count($querys) > 0) {
  66.             foreach ($querys as $key => $query) {
  67.                 $qb->andwhere('LOWER(CAST(p.'.$key.' AS STRING)) LIKE LOWER(:'.$key.')')->setParameter($key'%'.$query.'%');
  68.             }
  69.         }
  70.         //$qb->andwhere('d.status_document=:close');
  71.         //$qb->setParameter('close', 'Open');
  72.         /*
  73.         * Support for checkboxes at the repository level, we signed inputs differently above the columns
  74.         *
  75.         */
  76.         if ('checked' == $doc['doc_close'] && '' == $doc['doc_open']) {
  77.             $doc_key 'status_document';
  78.             $query 'Close';
  79.             $qb->andwhere('d.'.$doc_key.' LIKE :'.$doc_key)->setParameter($doc_key'%'.$query.'%');
  80.         }
  81.         if ('' == $doc['doc_close'] && 'checked' == $doc['doc_open']) {
  82.             $doc_key 'status_document';
  83.             $query 'Open';
  84.             $qb->andwhere('d.'.$doc_key.' LIKE :'.$doc_key)->setParameter($doc_key'%'.$query.'%');
  85.         }
  86.         if ('' == $doc['doc_close'] && '' == $doc['doc_open']) {
  87.             $doc_key 'status_document';
  88.             $query 'Blank';
  89.             $qb->andwhere('d.'.$doc_key.' LIKE :'.$doc_key)->setParameter($doc_key'%'.$query.'%');
  90.         }
  91.         return (new Paginator($qb))->paginate($page);
  92.     }
  93. //    /**
  94. //     * @return OpeningLine[] Returns an array of OpeningLine objects
  95. //     */
  96. //    public function findByExampleField($value): array
  97. //    {
  98. //        return $this->createQueryBuilder('o')
  99. //            ->andWhere('o.exampleField = :val')
  100. //            ->setParameter('val', $value)
  101. //            ->orderBy('o.id', 'ASC')
  102. //            ->setMaxResults(10)
  103. //            ->getQuery()
  104. //            ->getResult()
  105. //        ;
  106. //    }
  107. //    public function findOneBySomeField($value): ?OpeningLine
  108. //    {
  109. //        return $this->createQueryBuilder('o')
  110. //            ->andWhere('o.exampleField = :val')
  111. //            ->setParameter('val', $value)
  112. //            ->getQuery()
  113. //            ->getOneOrNullResult()
  114. //        ;
  115. //    }
  116. }