Skip to content

Commit 230b7e4

Browse files
authored
Merge pull request #65 from tuyennn/feature/graphql-fix
Fix GraphQl relevant missmatch while perform searching on graphql
2 parents b709236 + c4a65db commit 230b7e4

2 files changed

Lines changed: 44 additions & 18 deletions

File tree

.github/workflows/coding-standard.yml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ on:
88
jobs:
99
static:
1010
name: M2 Coding Standard
11-
runs-on: ubuntu-latest
11+
runs-on: ubuntu-22.04
1212
steps:
13-
- uses: actions/checkout@v2
14-
- uses: extdn/github-actions-m2/magento-coding-standard@master
13+
- uses: actions/checkout@v7
14+
- uses: extdn/github-actions-m2/magento-coding-standard/8.4@master

Plugin/DataProvider/Product/SearchCriteriaBuilder/AddDefaultOrders.php

Lines changed: 41 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -2,34 +2,60 @@
22
namespace GhoSter\OutOfStockAtLast\Plugin\DataProvider\Product\SearchCriteriaBuilder;
33

44
use GhoSter\OutOfStockAtLast\Model\AdditionalAttribute;
5+
use Magento\CatalogGraphQl\DataProvider\Product\SearchCriteriaBuilder;
6+
use Magento\Framework\Api\Search\SearchCriteriaInterface;
7+
use Magento\Framework\Api\SortOrder;
8+
use Magento\Framework\Api\SortOrderBuilder;
59

610
class AddDefaultOrders
711
{
812
/**
9-
* Add default sorting
10-
*
11-
* phpcs:disable Magento2.Annotation.MethodArguments.NoTypeSpecified
13+
* @var SortOrderBuilder
14+
*/
15+
private $sortOrderBuilder;
16+
17+
/**
18+
* @param SortOrderBuilder $sortOrderBuilder
19+
*/
20+
public function __construct(
21+
SortOrderBuilder $sortOrderBuilder
22+
) {
23+
$this->sortOrderBuilder = $sortOrderBuilder;
24+
}
25+
26+
/**
27+
* Add default sorting.
1228
*
13-
* @param $subject
29+
* @param SearchCriteriaBuilder $subject
30+
* @param SearchCriteriaInterface $searchCriteria
1431
* @param array $args
1532
* @param bool $includeAggregation
16-
* @return array
33+
*
34+
* @return SearchCriteriaInterface
35+
* @see \Magento\CatalogGraphQl\DataProvider\Product\SearchCriteriaBuilder::build
1736
* @SuppressWarnings(PHPMD.UnusedFormalParameter)
1837
*/
19-
public function beforeBuild(
20-
$subject,
38+
public function afterBuild(
39+
SearchCriteriaBuilder $subject,
40+
SearchCriteriaInterface $searchCriteria,
2141
array $args,
2242
bool $includeAggregation
23-
): array {
24-
if (!isset($args['sort'])) {
25-
$args['sort'] = [];
26-
}
43+
): SearchCriteriaInterface {
44+
$sortOrders = $searchCriteria->getSortOrders();
2745

28-
if (!isset($args['sort'][AdditionalAttribute::ATTRIBUTE_CODE])
29-
) {
30-
$args['sort'][AdditionalAttribute::ATTRIBUTE_CODE] = 'DESC';
46+
if (empty($sortOrders)) {
47+
return $searchCriteria;
3148
}
3249

33-
return [$args, $includeAggregation];
50+
$sortOrder = $this->sortOrderBuilder
51+
->setField(AdditionalAttribute::ATTRIBUTE_CODE)
52+
->setDirection(SortOrder::SORT_DESC)
53+
->create();
54+
55+
array_splice($sortOrders, -1, 0, [$sortOrder]);
56+
57+
$searchCriteria->setSortOrders($sortOrders);
58+
59+
return $searchCriteria;
3460
}
3561
}

0 commit comments

Comments
 (0)