Advertisement
Guest User

Untitled

a guest
Mar 3rd, 2017
242
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PHP 12.38 KB | None | 0 0
  1.     public function listAction(Request $request, $page)
  2.     {
  3.         $starterRepository = $this->getDoctrine()->getManager()
  4.         ->getRepository('CatalogBundle:Starter');
  5.  
  6.         $starterReferenceFilterForm = $this->createForm('starter_reference_filter', null, array(
  7.             'action' => $this->generateUrl('CatalogBundle_starter.references')
  8.             ));
  9.  
  10.         $starterApplicationRepository = $this->getDoctrine()->getManager()
  11.         ->getRepository('CatalogBundle:StarterApplication');
  12.         $title = $starterApplicationRepository->createQueryBuilder('sa')
  13.         ->addSelect('m')->innerJoin('sa.manufacturer', 'm')
  14.          ->addSelect('s')->innerJoin('sa.starters', 's')
  15.         ->groupBy('m.id')
  16.         ->orderBy('m.title')
  17.         ->where('s.active = 1');
  18.  
  19.         $title = $title->getQuery();
  20.         $title = $title->getArrayResult();
  21.         $starterApplicationFilterForm = $this->createForm('starter_application_filter', null, array(
  22.             'action' => $this->generateUrl('CatalogBundle_starter.applications'),
  23.             'title' => $title
  24.             ));
  25.  
  26.         $formvars = $request->get('starter_filter');
  27.         $voltage = $starterRepository->createQueryBuilder('s')
  28.         ->select('DISTINCT s.voltage')
  29.         ->addSelect('ABS(s.voltage) AS HIDDEN hd')
  30.         ->where('s.active = 1')
  31.         ->orderBy('hd');
  32.         if(!empty($formvars)){
  33.         foreach ($formvars as $key => $value) {
  34.             if($key == 's_voltage'&&!empty($value)){
  35.                $voltage->andWhere('s.voltage like :val1')
  36.                ->setParameter('val1', $value.'');
  37.            }
  38.             if($key == 's_power'&&!empty($value)){
  39.               $voltage->andWhere('s.power LIKE :val2')
  40.                ->setParameter('val2', $value.'');
  41.            }
  42.             if($key == 's_rotation'&&!empty($value)){
  43.                $voltage->andWhere('s.rotation LIKE :val3')
  44.                ->setParameter('val3', $value.'');
  45.            }
  46.             if($key == 's_teeth'&&!empty($value)){
  47.                $voltage->andWhere('s.teeth LIKE :val4')
  48.                ->setParameter('val4', $value.'');
  49.            }
  50.             if($key == 's_usage'&&!empty($value)){
  51.                 $voltage->andWhere('s.teeth LIKE :val4')
  52.                     ->setParameter('val4', $value.'');
  53.             }
  54.             if($key == 's_type'&&!empty($value)){
  55.                $voltage->andWhere('s.type LIKE :val5')
  56.                ->setParameter('val5', $value.'');
  57.            }
  58.             if($key == 's_module'&&!empty($value)){
  59.                $voltage->andWhere('s.module LIKE :val6')
  60.                ->setParameter('val6', $value.'');
  61.            }
  62.        }
  63.    }
  64.        $voltage = $voltage->getQuery();
  65.        $voltage = $voltage->getResult();
  66.  
  67.         $power = $starterRepository->createQueryBuilder('s')
  68.         ->select('DISTINCT s.power')
  69.         ->addSelect('ABS(s.power) AS HIDDEN hd')
  70.         ->where('s.active = 1')
  71.         ->orderBy('hd');
  72.         if(!empty($formvars)){
  73.         foreach ($formvars as $key => $value) {
  74.             if($key == 's_voltage'&&!empty($value)){
  75.                $power->andWhere('s.voltage like :val1')
  76.                ->setParameter('val1', $value.'');
  77.            }
  78.             if($key == 's_power'&&!empty($value)){
  79.               $power->andWhere('s.power LIKE :val2')
  80.                ->setParameter('val2', $value.'%');
  81.            }
  82.             if($key == 's_rotation'&&!empty($value)){
  83.                $power->andWhere('s.rotation LIKE :val3')
  84.                ->setParameter('val3', $value.'');
  85.            }
  86.             if($key == 's_teeth'&&!empty($value)){
  87.                $power->andWhere('s.teeth LIKE :val4')
  88.                ->setParameter('val4', $value.'');
  89.            }
  90.             if($key == 's_usage'&&!empty($value)){
  91.                 $voltage->andWhere('s.teeth LIKE :val4')
  92.                     ->setParameter('val4', $value.'');
  93.             }
  94.             if($key == 's_type'&&!empty($value)){
  95.                $power->andWhere('s.type LIKE :val5')
  96.                ->setParameter('val5', $value.'');
  97.            }
  98.             if($key == 's_module'&&!empty($value)){
  99.                $power->andWhere('s.module LIKE :val6')
  100.                ->setParameter('val6', $value.'');
  101.            }
  102.            
  103.        }
  104.    }
  105.         $power = $power->getQuery();
  106.         $power = $power->getResult();
  107.  
  108.         $module = $starterRepository->createQueryBuilder('s')
  109.         ->select('DISTINCT s.module')
  110.         ->addSelect('ABS(s.module) AS HIDDEN hd')
  111.         ->where('s.active = 1')
  112.         ->orderBy('hd');
  113.         if(!empty($formvars)){
  114.       foreach ($formvars as $key => $value) {
  115.             if($key == 's_voltage'&&!empty($value)){
  116.                $module->andWhere('s.voltage like :val1')
  117.                ->setParameter('val1', $value.'');
  118.         // echo $value;
  119.            }
  120.             if($key == 's_power'&&!empty($value)){
  121.               $module->andWhere('s.power LIKE :val2')
  122.                ->setParameter('val2', $value.'');
  123.            }
  124.             if($key == 's_rotation'&&!empty($value)){
  125.                $module->andWhere('s.rotation LIKE :val3')
  126.                ->setParameter('val3', $value.'');
  127.            }
  128.             if($key == 's_teeth'&&!empty($value)){
  129.                $module->andWhere('s.teeth LIKE :val4')
  130.                ->setParameter('val4', $value.'');
  131.            }
  132.           if($key == 's_usage'&&!empty($value)){
  133.               $voltage->andWhere('s.teeth LIKE :val4')
  134.                   ->setParameter('val4', $value.'');
  135.           }
  136.             if($key == 's_type'&&!empty($value)){
  137.                $module->andWhere('s.type LIKE :val5')
  138.                ->setParameter('val5', $value.'');
  139.            }
  140.            if($key == 's_module'&&!empty($value)){
  141.                $module->andWhere('s.module LIKE :val6')
  142.                ->setParameter('val6', $value.'');
  143.            }
  144.        }
  145.    }
  146.         $module = $module->getQuery();
  147.         $module = $module->getResult();
  148.  
  149.         $rotation = $starterRepository->createQueryBuilder('s')
  150.         ->select('DISTINCT s.rotation')
  151.         ->where('s.active = 1')
  152.         ->orderBy('s.rotation');
  153.         if(!empty($formvars)){
  154.       foreach ($formvars as $key => $value) {
  155.             if($key == 's_voltage'&&!empty($value)){
  156.                $rotation->andWhere('s.voltage like :val1')
  157.                ->setParameter('val1', $value.'');
  158.            }
  159.             if($key == 's_power'&&!empty($value)){
  160.               $rotation->andWhere('s.power LIKE :val2')
  161.                ->setParameter('val2', $value.'');
  162.            }
  163.             if($key == 's_rotation'&&!empty($value)){
  164.                $rotation->andWhere('s.rotation LIKE :val3')
  165.                ->setParameter('val3', $value.'');
  166.            }
  167.             if($key == 's_teeth'&&!empty($value)){
  168.                $rotation->andWhere('s.teeth LIKE :val4')
  169.                ->setParameter('val4', $value.'');
  170.            }
  171.           if($key == 's_usage'&&!empty($value)){
  172.               $voltage->andWhere('s.teeth LIKE :val4')
  173.                   ->setParameter('val4', $value.'');
  174.           }
  175.             if($key == 's_type'&&!empty($value)){
  176.                $rotation->andWhere('s.type LIKE :val5')
  177.                ->setParameter('val5', $value.'');
  178.            }
  179.            if($key == 's_module'&&!empty($value)){
  180.                $rotation->andWhere('s.module LIKE :val6')
  181.                ->setParameter('val6', $value.'');
  182.            }
  183.        }
  184.    }
  185.         $rotation = $rotation->getQuery();
  186.         $rotation = $rotation->getResult();
  187.  
  188.         $teeth= $starterRepository->createQueryBuilder('s')
  189.         ->select('DISTINCT s.teeth')
  190.         ->where('s.active = 1')
  191.         ->orderBy('s.teeth');
  192.         if(!empty($formvars)){
  193.      foreach ($formvars as $key => $value) {
  194.             if($key == 's_voltage'&&!empty($value)){
  195.                $teeth->andWhere('s.voltage like :val1')
  196.                ->setParameter('val1', $value.'');
  197.            }
  198.             if($key == 's_power'&&!empty($value)){
  199.               $teeth->andWhere('s.power LIKE :val2')
  200.                ->setParameter('val2', $value.'');
  201.            }
  202.             if($key == 's_rotation'&&!empty($value)){
  203.                $teeth->andWhere('s.rotation LIKE :val3')
  204.                ->setParameter('val3', $value.'');
  205.            }
  206.             if($key == 's_teeth'&&!empty($value)){
  207.                $teeth->andWhere('s.teeth LIKE :val4')
  208.                ->setParameter('val4', $value.'');
  209.            }
  210.             if($key == 's_type'&&!empty($value)){
  211.                $teeth->andWhere('s.type LIKE :val5')
  212.                ->setParameter('val5', $value.'');
  213.            }
  214.            if($key == 's_module'&&!empty($value)){
  215.                $teeth->andWhere('s.module LIKE :val6')
  216.                ->setParameter('val6', $value.'');
  217.            }
  218.        }
  219.    }
  220.  
  221.         $teeth = $teeth->getQuery();
  222.         $teeth = $teeth->getResult();
  223.  
  224.         $type = $starterRepository->createQueryBuilder('s')
  225.         ->select('DISTINCT s.type')
  226.         ->where('s.active = 1')
  227.         ->orderBy('s.type');
  228.         if(!empty($formvars)){
  229.      foreach ($formvars as $key => $value) {
  230.             if($key == 's_serial' && !empty($value)){
  231.                
  232.             }
  233.             if($key == 's_voltage'&&!empty($value)){
  234.                $type->andWhere('s.voltage like :val1')
  235.                ->setParameter('val1', $value.'');
  236.            }
  237.             if($key == 's_power'&&!empty($value)){
  238.               $type->andWhere('s.power LIKE :val2')
  239.                ->setParameter('val2', $value.'');
  240.            }
  241.             if($key == 's_rotation'&&!empty($value)){
  242.                $type->andWhere('s.rotation LIKE :val3')
  243.                ->setParameter('val3', $value.'');
  244.            }
  245.             if($key == 's_teeth'&&!empty($value)){
  246.                $type->andWhere('s.teeth LIKE :val4')
  247.                ->setParameter('val4', $value.'');
  248.            }
  249.             if($key == 's_type'&&!empty($value)){
  250.                $type->andWhere('s.type LIKE :val5')
  251.                ->setParameter('val5', $value.'');
  252.            }
  253.             if($key == 's_module'&&!empty($value)){
  254.                $type->andWhere('s.module LIKE :val6')
  255.                ->setParameter('val6', $value.'');
  256.            }
  257.        }
  258.    }
  259.         $type = $type->getQuery();
  260.         $type = $type->getResult();
  261.  
  262.         $searchForm = $this->createForm('starter_filter', null, array(
  263.             'action' => $this->generateUrl('CatalogBundle_starter.list'),
  264.             'voltage'=>$voltage,
  265.             'power'=>$power,
  266.             'rotation'=>$rotation,
  267.             'teeth'=>$teeth,
  268.             'type'=>$type,
  269.             'module'=>$module
  270.             ),$voltage);
  271.         $searchForm->submit($request);
  272.         $searchData = array_filter($searchForm->getData());
  273.  
  274.         foreach ($searchData as $key => $value) {
  275.             if ($key === 's_power') {
  276.                 $searchData[$key] = str_replace(',', '.', $value);
  277.             }
  278.         }
  279.  
  280.         $query = $starterRepository->createQueryBuilder('s')
  281.         ->where('s.active = 1')
  282.         ->where('reference.ref_usage = 1')
  283.         ->orderBy('s.voltage, s.power, s.serial');
  284.  
  285.         foreach ($searchData as $key => $value) {
  286.             if ($key == 't_id') {
  287.                 $ids = array();
  288.                 foreach ($value->getValues() as $tag) {
  289.                     $ids[] = $tag->getId();
  290.                 }
  291.  
  292.                 if (count($ids)) {
  293.                     $query->addSelect('t')->innerJoin('s.tags', 't')
  294.                     ->andWhere('t.id IN (:ids)')
  295.                     ->setParameter('ids', $ids);
  296.                 }
  297.             } else {
  298.                 $query->andWhere(str_replace('_', '.', $key).' LIKE :'.$key)
  299.                 ->setParameter($key, $value.'');
  300.             }
  301.         }
  302.  
  303.         $paginator  = $this->get('knp_paginator');
  304.         $pagination = $paginator->paginate(
  305.             $query->getQuery(),
  306.             $page,
  307.             $this->get('request')->query->get('limit', 50)
  308.             );
  309.  
  310.         $dispatcher = $this->container->get('event_dispatcher');
  311.         $dispatcher->dispatch(UserEvents::USER_ACTION, new UserActionEvent($request));
  312.  
  313.         return array(
  314.             'pagination' => $pagination,
  315.             'searchForm' => $searchForm->createView(),
  316.             'starterReferenceFilterForm' => $starterReferenceFilterForm->createView(),
  317.             'starterApplicationFilterForm' => $starterApplicationFilterForm->createView()
  318.             );
  319.     }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement