Skip to content

Commit

Permalink
[GeneralConvention] Fix admin filters (#11548)
Browse files Browse the repository at this point in the history
Co-authored-by: Rémi <[email protected]>
  • Loading branch information
Remg and Rémi authored Mar 3, 2025
1 parent 3a4c956 commit ecea1ab
Showing 1 changed file with 43 additions and 2 deletions.
45 changes: 43 additions & 2 deletions src/Admin/GeneralConventionAdmin.php
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,6 @@
use Sonata\AdminBundle\Datagrid\ListMapper;
use Sonata\AdminBundle\Form\FormMapper;
use Sonata\AdminBundle\Form\Type\ModelAutocompleteType;
use Sonata\DoctrineORMAdminBundle\Filter\CallbackFilter;
use Sonata\DoctrineORMAdminBundle\Filter\DateRangeFilter;
use Sonata\DoctrineORMAdminBundle\Filter\ModelFilter;
use Sonata\Form\Type\DateRangePickerType;
Expand All @@ -37,6 +36,7 @@ protected function configureDatagridFilters(DatagridMapper $filter): void
'name',
'code',
],
'callback' => [$this, 'prepareDepartmentAutocompleteFilterCallback'],
],
])
->add('districtZone', ZoneAutocompleteFilter::class, [
Expand All @@ -50,9 +50,10 @@ protected function configureDatagridFilters(DatagridMapper $filter): void
'name',
'code',
],
'callback' => [$this, 'prepareDistrictAutocompleteFilterCallback'],
],
])
->add('committee', CallbackFilter::class, [
->add('committee', null, [
'label' => 'Comité',
'field_type' => ModelAutocompleteType::class,
'show_filter' => true,
Expand Down Expand Up @@ -307,4 +308,44 @@ protected function configureListFields(ListMapper $list): void
])
;
}

public static function prepareDepartmentAutocompleteFilterCallback(
AbstractAdmin $admin,
array $properties,
string $value,
): void {
self::prepareZoneAutocompleteFilterCallback($admin, $properties, $value, [Zone::DEPARTMENT]);
}

public static function prepareDistrictAutocompleteFilterCallback(
AbstractAdmin $admin,
array $properties,
string $value,
): void {
self::prepareZoneAutocompleteFilterCallback($admin, $properties, $value, [Zone::DISTRICT]);
}

private static function prepareZoneAutocompleteFilterCallback(
AbstractAdmin $admin,
array $properties,
string $value,
array $types,
): void {
$datagrid = $admin->getDatagrid();
$qb = $datagrid->getQuery();
$alias = $qb->getRootAlias();

$orx = $qb->expr()->orX();
foreach ($properties as $property) {
$orx->add($alias.'.'.$property.' LIKE :property_'.$property);
$qb->setParameter('property_'.$property, '%'.$value.'%');
}

$qb
->orWhere($orx)
->andWhere("$alias.type IN (:zone_types)")
->andWhere("$alias.active = 1")
->setParameter('zone_types', $types)
;
}
}

0 comments on commit ecea1ab

Please sign in to comment.