Просмотр исходного кода

FD3-527 Filtro por serialNumber, ponSerialNumber e "identificador" listado ONUs

Espinoza Guillermo 7 лет назад
Родитель
Сommit
3fb469896e

+ 20 - 8
src/FTTHBundle/Admin/ONUAdmin.php

@@ -2,24 +2,23 @@
 
 namespace FTTHBundle\Admin;
 
+use Doctrine\ORM\EntityRepository;
+use Sonata\DoctrineORMAdminBundle\Datagrid\ProxyQuery;
 use Sonata\AdminBundle\Datagrid\DatagridMapper;
 use Sonata\AdminBundle\Datagrid\ListMapper;
 use Sonata\AdminBundle\Form\FormMapper;
 use Sonata\AdminBundle\Show\ShowMapper;
+use Sonata\CoreBundle\Validator\ErrorElement;
 use Sonata\DoctrineORMAdminBundle\Filter\CallbackFilter;
-use WorkflowBundle\Admin\WorkflowBaseAdmin;
 use Symfony\Component\Form\FormEvent;
 use Symfony\Component\Form\FormEvents;
-use Doctrine\ORM\EntityRepository;
-use Sonata\CoreBundle\Validator\ErrorElement;
-
 use Symfony\Component\Form\Extension\Core\Type\CollectionType;
 use Symfony\Component\Form\Extension\Core\Type\ChoiceType;
-use FTTHBundle\Form\ServicePortType;
 use Symfony\Component\Form\Extension\Core\Type\CheckboxType;
 use Symfony\Component\Form\Extension\Core\Type\HiddenType;
+use FTTHBundle\Form\ServicePortType;
 use FTTHBundle\Utils\OLTModelMark;
-
+use WorkflowBundle\Admin\WorkflowBaseAdmin;
 
 class ONUAdmin extends WorkflowBaseAdmin
 {
@@ -31,11 +30,24 @@ class ONUAdmin extends WorkflowBaseAdmin
     {
         $datagridMapper
             ->add('clientId')
-            ->add('ponSerialNumber')
+            ->add('ponSerialNumber', CallbackFilter::class, array(
+                'callback' => function (ProxyQuery $query, $alias, $field, $data) {
+                    if (!$data || !is_array($data) || !array_key_exists('value', $data) || !isset($data['value'])) {
+                        return;
+                    }
+
+                    $alias = $query->getRootAlias();
+                    $query
+                        ->andWhere("{$alias}.serialNumber LIKE :id OR {$alias}.ponSerialNumber LIKE :id OR {$alias}.ponSerialNumberAux LIKE :id")
+                        ->setParameter('id', "%{$data['value']}%");
+                },), null, [
+                    'attr' => [
+                        'placeholder' => $this->trans('sonata.filter.onu_id')
+                    ]
+                ])
             ->add('profile')
             ->add('nap')
             ->add('model')
-            ->add('serialNumber')
             ->add('mac')
             ->add('olt');
     }

+ 1 - 0
src/FTTHBundle/Resources/translations/FTTHBundle.es.yml

@@ -300,3 +300,4 @@ tcontprofile: Perfil tcont
 vlan_id: VLan ID
 traffic_profile : Perfil de Tráfico
 Files: Archivos
+sonata.filter.onu_id: Ingrese Identificador|Nro serie|Nro serie PON