Skip to content

Commit 13c3ccf

Browse files
authored
add support to search across columns for quantity value list (#1765)
1 parent bf79cdb commit 13c3ccf

2 files changed

Lines changed: 28 additions & 1 deletion

File tree

src/Unit/Controller/QuantityValue/CollectionController.php

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -63,7 +63,9 @@ public function __construct(
6363
summary: 'unit_quantity_value_units_collection_summary',
6464
tags: [Tags::Units->value]
6565
)]
66-
#[CollectionRequestBody]
66+
#[CollectionRequestBody(
67+
columnFiltersExample: '[{"type":"search", "filterValue": "kg"}]',
68+
)]
6769
#[SuccessResponse(
6870
description: 'unit_quantity_value_units_collection_success_response',
6971
content: new CollectionJson(new GenericCollection(QuantityValueUnit::class))

src/Unit/Repository/QuantityValueRepository.php

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@
1414
namespace Pimcore\Bundle\StudioBackendBundle\Unit\Repository;
1515

1616
use Pimcore\Bundle\StaticResolverBundle\Models\DataObject\QuantityValue\UnitResolverInterface;
17+
use Pimcore\Bundle\StudioBackendBundle\Filter\FilterType;
1718
use Pimcore\Bundle\StudioBackendBundle\Filter\MappedParameter\FilterParameter;
1819
use Pimcore\Bundle\StudioBackendBundle\Listing\Service\ListingFilterInterface;
1920
use Pimcore\Model\DataObject\QuantityValue\Unit;
@@ -69,6 +70,7 @@ public function getUnitListByBaseUnit(string $baseUnitId, string $fromUnitId): a
6970
public function getUnitListing(FilterParameter $parameters): Listing
7071
{
7172
$listing = $this->getUnfilteredUnitListing();
73+
$this->applySearchCondition($listing, $parameters);
7274
$this->listingFilter->applyFilters($parameters, $listing);
7375

7476
return $listing;
@@ -78,4 +80,27 @@ private function getUnfilteredUnitListing(): Listing
7880
{
7981
return new Listing();
8082
}
83+
84+
private function applySearchCondition(Listing $listing, FilterParameter $parameters): void
85+
{
86+
$searchFilter = $parameters->getSimpleColumnFilterByType(FilterType::SEARCH->value);
87+
if (!$searchFilter) {
88+
return;
89+
}
90+
91+
if ($searchFilter->getFilterValue() === '' || $searchFilter->getFilterValue() === null) {
92+
return;
93+
}
94+
95+
$param = ['searchTerm' => "%{$searchFilter->getFilterValue()}%"];
96+
$listing->addConditionParam('`id` LIKE :searchTerm', $param);
97+
$listing->addConditionParam('`abbreviation` LIKE :searchTerm', $param, 'OR');
98+
$listing->addConditionParam('`longname` LIKE :searchTerm', $param, 'OR');
99+
$listing->addConditionParam('`group` LIKE :searchTerm', $param, 'OR');
100+
$listing->addConditionParam('`baseunit` LIKE :searchTerm', $param, 'OR');
101+
$listing->addConditionParam('`reference` LIKE :searchTerm', $param, 'OR');
102+
$listing->addConditionParam('`converter` LIKE :searchTerm', $param, 'OR');
103+
$listing->addConditionParam('CAST(`factor` AS CHAR) LIKE :searchTerm', $param, 'OR');
104+
$listing->addConditionParam('CAST(`conversionOffset` AS CHAR) LIKE :searchTerm', $param, 'OR');
105+
}
81106
}

0 commit comments

Comments
 (0)