Skip to content

Commit c2812d3

Browse files
committed
AC-1805::commited the already present community PR
2 parents 428793c + ad02994 commit c2812d3

File tree

2 files changed

+30
-7
lines changed

2 files changed

+30
-7
lines changed

app/code/Magento/SalesGraphQl/Model/Resolver/CustomerOrders/Query/OrderFilter.php

Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -81,6 +81,7 @@ public function createFilterGroups(
8181
$filterGroups[] = $this->filterGroupBuilder->create();
8282

8383
if (isset($args['filter'])) {
84+
$filters = [];
8485
foreach ($args['filter'] as $field => $cond) {
8586
if (isset($this->fieldTranslatorArray[$field])) {
8687
$field = $this->fieldTranslatorArray[$field];
@@ -91,23 +92,21 @@ public function createFilterGroups(
9192
throw new InputException(__('Invalid match filter'));
9293
}
9394
$searchValue = $value !== null ? str_replace('%', '', $value) : '';
94-
$filters = $this->filterBuilder->setField($field)
95+
$filters[] = $this->filterBuilder->setField($field)
9596
->setValue("%{$searchValue}%")
9697
->setConditionType('like')
9798
->create();
98-
$this->filterGroupBuilder->setFilters([$filters]);
99-
$filterGroups[] = $this->filterGroupBuilder->create();
10099
} else {
101-
$filters = $this->filterBuilder->setField($field)
100+
$filters[] = $this->filterBuilder->setField($field)
102101
->setValue($value)
103102
->setConditionType($condType)
104103
->create();
105-
$this->filterGroupBuilder->setFilters([$filters]);
106-
$filterGroups[] = $this->filterGroupBuilder->create();
107104
}
108-
109105
}
110106
}
107+
108+
$this->filterGroupBuilder->setFilters($filters);
109+
$filterGroups[] = $this->filterGroupBuilder->create();
111110
}
112111
return $filterGroups;
113112
}

lib/internal/Magento/Framework/Api/SearchCriteria/CollectionProcessor/FilterProcessor.php

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -85,6 +85,8 @@ private function addFilterGroupToCollection(
8585
}
8686
}
8787

88+
$this->checkFromTo($fields, $conditions);
89+
8890
if ($fields) {
8991
$collection->addFieldToFilter($fields, $conditions);
9092
}
@@ -125,4 +127,26 @@ private function getFieldMapping($field)
125127
{
126128
return $this->fieldMapping[$field] ?? $field;
127129
}
130+
131+
/**
132+
* Check filtergoup for type from & to
133+
*
134+
* @param string[] $fields
135+
* @param array<string[]> $conditions
136+
* @return void
137+
*/
138+
private function checkFromTo(&$fields, &$conditions)
139+
{
140+
$_fields = array_unique($fields);
141+
$_conditions = [];
142+
foreach ($conditions as $condition) {
143+
$_conditions[array_key_first($condition)] = array_first($condition);
144+
}
145+
if ((count($_fields) == 1) && (count($_conditions) == 2)
146+
&& isset($_conditions['from']) && isset($_conditions['to'])
147+
) {
148+
$fields = $_fields;
149+
$conditions = [$_conditions];
150+
}
151+
}
128152
}

0 commit comments

Comments
 (0)