public function listRoutesAction(Request $request)
 {
     $repo = $this->get('wucdbm_menu_builder.repo.routes');
     $filter = new RouteFilter();
     $pagination = $filter->getPagination()->enable();
     $filterForm = $this->createForm(FilterType::class, $filter);
     $filter->load($request, $filterForm);
     $routes = $repo->filter($filter);
     $data = ['routes' => $routes, 'filter' => $filter, 'pagination' => $pagination, 'filterForm' => $filterForm->createView()];
     return $this->render('@WucdbmMenuBuilder/Route/list/list.html.twig', $data);
 }
 public function filter(RouteFilter $filter)
 {
     $builder = $this->getQueryBuilder();
     if ($filter->getName()) {
         $builder->andWhere('r.name LIKE :name')->setParameter('name', '%' . $filter->getName() . '%');
     }
     if ($filter->getRoute()) {
         $builder->andWhere('r.route LIKE :route')->setParameter('route', '%' . $filter->getRoute() . '%');
     }
     if ($filter->getParameter()) {
         $builder->andWhere('p.parameter LIKE :parameter')->setParameter('parameter', '%' . $filter->getParameter() . '%');
     }
     if ($filter->getParameterName()) {
         $builder->andWhere('p.name LIKE :parameterName')->setParameter('parameterName', '%' . $filter->getParameterName() . '%');
     }
     if ($filter->getIsNamed()) {
         switch ($filter->getIsNamed()) {
             case RouteFilter::IS_NAMED_TRUE:
                 $builder->andWhere('r.name IS NOT NULL');
                 break;
             case RouteFilter::IS_NAMED_FALSE:
                 $builder->andWhere('r.name IS NULL');
                 break;
         }
     }
     if ($filter->getIsSystem()) {
         switch ($filter->getIsSystem()) {
             case RouteFilter::IS_SYSTEM_TRUE:
                 $builder->andWhere('r.isSystem = :isSystem')->setParameter('isSystem', true);
                 break;
             case RouteFilter::IS_SYSTEM_FALSE:
                 $builder->andWhere('r.isSystem = :isSystem')->setParameter('isSystem', false);
                 break;
         }
     }
     return $this->returnFilteredEntities($builder, $filter, 'r.id');
 }