Advertisement
Guest User

Untitled

a guest
Feb 20th, 2020
98
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PHP 2.23 KB | None | 0 0
  1. <?php
  2.  
  3. namespace WarehouseBundle\Repository;
  4.  
  5. use Doctrine\ORM\EntityRepository;
  6.  
  7. class IsolationRepository extends EntityRepository
  8. {
  9.     public function filterListItemsByParams($params)
  10.     {
  11.         $qb = $this->createQueryBuilder('i');
  12.        
  13.         $textFilters = [
  14.             'name' => 'name_filter'
  15.         ];
  16.        
  17.         $betweenFilters = ['size', 'qty', 'pcs_in_pack'];
  18.        
  19.         $dateFilters = ['updated_at', 'created_at'];
  20.                
  21.         foreach ($textFilters as $columnName => $inputName) {
  22.             if (isset($params[$inputName]) && $params[$inputName] != '') {
  23.                 $qb->andWhere($qb->expr()->like('i.' . $columnName, ':' . $columnName))
  24.                         ->setParameter($columnName,'%' . $params[$inputName] . '%');
  25.             }
  26.         }
  27.        
  28.         foreach ($betweenFilters as $betweenFilter) {
  29.             if (!empty($params[$betweenFilter . '_from_filter'])) {
  30.                 $qb->andWhere(($qb->expr()->gte('i.' . $betweenFilter, $params[$betweenFilter . '_from_filter'])));
  31.             }
  32.            
  33.             if (!empty($params[$betweenFilter . '_to_filter'])) {
  34.                 $qb->andWhere(($qb->expr()->lte('i.' . $betweenFilter, $params[$betweenFilter . '_to_filter'])));
  35.             }
  36.         }
  37.        
  38.         foreach ($dateFilters as $dateFilter) {
  39.             if (!empty($params[$dateFilter . '_from_filter'])) {
  40.                 $dateFilterFrom = \DateTime::createFromFormat('d.m.Y', $params[$dateFilter . '_from_filter']);
  41.                 $qb->andWhere(($qb->expr()->gte('i.' . $dateFilter, "'" . $dateFilterFrom->format('Y-m-d') . "'")));
  42.             }
  43.            
  44.             if (!empty($params[$dateFilter . '_to_filter'])) {
  45.                 $dateFilterTo = \DateTime::createFromFormat('d.m.Y', $params[$dateFilter . '_to_filter']);
  46.                 $qb->andWhere(($qb->expr()->lte('i.' . $dateFilter, "'" . $dateFilterTo->format('Y-m-d') . "'")));
  47.             }
  48.         }
  49.        
  50.         $qb->getQuery();
  51.        
  52.         //Ugly hack
  53.         if(!isset($params['sort']) && !!isset($params['direction'])) {
  54.             $_GET['sort'] = 'i.name';
  55.             $_GET['direction'] = 'asc';
  56.         }
  57.  
  58.         return $qb;
  59.     }
  60. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement