Skip to content

Commit 274ee9e

Browse files
committed
Add categories and tags filter by store
1 parent 1d5b8e0 commit 274ee9e

File tree

2 files changed

+40
-2
lines changed

2 files changed

+40
-2
lines changed

Model/Resolver/Categories.php

Lines changed: 20 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99

1010
use Magento\Framework\Api\FilterBuilder;
1111
use Magento\Framework\Api\Search\FilterGroupBuilder;
12+
use Magento\Framework\App\ScopeResolverInterface;
1213
use Magento\Framework\GraphQl\Query\Resolver\Argument\SearchCriteria\Builder as SearchCriteriaBuilder;
1314
use Magento\Framework\GraphQl\Config\Element\Field;
1415
use Magento\Framework\GraphQl\Query\ResolverInterface;
@@ -43,26 +44,34 @@ class Categories implements ResolverInterface
4344
*/
4445
protected $filterGroupBuilder;
4546

47+
/**
48+
* @var ScopeResolverInterface
49+
*/
50+
private $scopeResolver;
51+
4652
/**
4753
* Categories constructor.
4854
* @param SearchCriteriaBuilder $searchCriteriaBuilder
4955
* @param CategoryRepositoryInterface $categoryRepositoryInterface
5056
* @param DataProvider\Category $categoryDataProvider
5157
* @param FilterBuilder $filterBuilder
5258
* @param FilterGroupBuilder $filterGroupBuilder
59+
* @param ScopeResolverInterface $scopeResolver
5360
*/
5461
public function __construct(
5562
SearchCriteriaBuilder $searchCriteriaBuilder,
5663
CategoryRepositoryInterface $categoryRepositoryInterface,
5764
DataProvider\Category $categoryDataProvider,
5865
FilterBuilder $filterBuilder,
59-
FilterGroupBuilder $filterGroupBuilder
66+
FilterGroupBuilder $filterGroupBuilder,
67+
ScopeResolverInterface $scopeResolver
6068
) {
6169
$this->searchCriteriaBuilder = $searchCriteriaBuilder;
6270
$this->categoryRepositoryInterface = $categoryRepositoryInterface;
6371
$this->categoryDataProvider = $categoryDataProvider;
6472
$this->filterBuilder = $filterBuilder;
6573
$this->filterGroupBuilder = $filterGroupBuilder;
74+
$this->scopeResolver = $scopeResolver;
6675
}
6776
/**
6877
* @inheritdoc
@@ -83,6 +92,16 @@ public function resolve(
8392

8493
$filterGroups = $searchCriteria->getFilterGroups();
8594
$filterGroups[] = $this->filterGroupBuilder->addFilter($statusFilter)->create();
95+
96+
$scope = $this->scopeResolver->getScope()->getId();
97+
98+
$scopeFilter = $this->filterBuilder
99+
->setField('store_id')
100+
->setValue($scope)
101+
->setConditionType('eq')
102+
->create();
103+
$filterGroups[] = $this->filterGroupBuilder->addFilter($scopeFilter)->create();
104+
86105
$searchCriteria->setFilterGroups($filterGroups);
87106

88107
$searchResult = $this->categoryRepositoryInterface->getList($searchCriteria);

Model/Resolver/Tags.php

Lines changed: 20 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99

1010
use Magento\Framework\Api\FilterBuilder;
1111
use Magento\Framework\Api\Search\FilterGroupBuilder;
12+
use Magento\Framework\App\ScopeResolverInterface;
1213
use Magento\Framework\GraphQl\Query\Resolver\Argument\SearchCriteria\Builder as SearchCriteriaBuilder;
1314
use Magento\Framework\GraphQl\Config\Element\Field;
1415
use Magento\Framework\GraphQl\Query\ResolverInterface;
@@ -43,26 +44,34 @@ class Tags implements ResolverInterface
4344
*/
4445
private $filterGroupBuilder;
4546

47+
/**
48+
* @var ScopeResolverInterface
49+
*/
50+
private $scopeResolver;
51+
4652
/**
4753
* Comments constructor.
4854
* @param SearchCriteriaBuilder $searchCriteriaBuilder
4955
* @param TagRepositoryInterface $tagRepository
5056
* @param DataProvider\Tag $tagDataProvider
5157
* @param FilterBuilder $filterBuilder
5258
* @param FilterGroupBuilder $filterGroupBuilder
59+
* @param ScopeResolverInterface $scopeResolver
5360
*/
5461
public function __construct(
5562
SearchCriteriaBuilder $searchCriteriaBuilder,
5663
TagRepositoryInterface $tagRepository,
5764
DataProvider\Tag $tagDataProvider,
5865
FilterBuilder $filterBuilder,
59-
FilterGroupBuilder $filterGroupBuilder
66+
FilterGroupBuilder $filterGroupBuilder,
67+
ScopeResolverInterface $scopeResolver
6068
) {
6169
$this->searchCriteriaBuilder = $searchCriteriaBuilder;
6270
$this->tagRepository = $tagRepository;
6371
$this->tagDataProvider = $tagDataProvider;
6472
$this->filterBuilder = $filterBuilder;
6573
$this->filterGroupBuilder = $filterGroupBuilder;
74+
$this->scopeResolver = $scopeResolver;
6675
}
6776
/**
6877
* @inheritdoc
@@ -83,6 +92,16 @@ public function resolve(
8392

8493
$filterGroups = $searchCriteria->getFilterGroups();
8594
$filterGroups[] = $this->filterGroupBuilder->addFilter($statusFilter)->create();
95+
96+
$scope = $this->scopeResolver->getScope()->getId();
97+
98+
$scopeFilter = $this->filterBuilder
99+
->setField('store_id')
100+
->setValue($scope)
101+
->setConditionType('eq')
102+
->create();
103+
$filterGroups[] = $this->filterGroupBuilder->addFilter($scopeFilter)->create();
104+
86105
$searchCriteria->setFilterGroups($filterGroups);
87106

88107
$searchResult = $this->tagRepository->getList($searchCriteria);

0 commit comments

Comments
 (0)