![]() Server : Apache System : Linux server2.corals.io 4.18.0-348.2.1.el8_5.x86_64 #1 SMP Mon Nov 15 09:17:08 EST 2021 x86_64 User : corals ( 1002) PHP Version : 7.4.33 Disable Function : exec,passthru,shell_exec,system Directory : /home/corals/cartforge.co/app/code/Magefan/BlogGraphQl/Model/Resolver/ |
<?php /** * Copyright © Magefan ([email protected]). All rights reserved. * Please visit Magefan.com for license details (https://magefan.com/end-user-license-agreement). */ declare(strict_types=1); namespace Magefan\BlogGraphQl\Model\Resolver; use Magento\Framework\Api\FilterBuilder; use Magento\Framework\Api\Search\FilterGroupBuilder; use Magento\Framework\App\ScopeResolverInterface; use Magento\Framework\GraphQl\Query\Resolver\Argument\SearchCriteria\Builder as SearchCriteriaBuilder; use Magento\Framework\GraphQl\Config\Element\Field; use Magento\Framework\GraphQl\Query\ResolverInterface; use Magento\Framework\GraphQl\Schema\Type\ResolveInfo; use Magefan\Blog\Api\CategoryRepositoryInterface; /** * Class Categories * @package Magefan\BlogGraphQl\Model\Resolver */ class Categories implements ResolverInterface { /** * @var SearchCriteriaBuilder */ private $searchCriteriaBuilder; /** * @var CategoryRepositoryInterface */ private $categoryRepositoryInterface; /** * @var DataProvider\Category */ protected $categoryDataProvider; /** * @var FilterBuilder */ protected $filterBuilder; /** * @var FilterGroupBuilder */ protected $filterGroupBuilder; /** * @var ScopeResolverInterface */ private $scopeResolver; /** * Categories constructor. * @param SearchCriteriaBuilder $searchCriteriaBuilder * @param CategoryRepositoryInterface $categoryRepositoryInterface * @param DataProvider\Category $categoryDataProvider * @param FilterBuilder $filterBuilder * @param FilterGroupBuilder $filterGroupBuilder * @param ScopeResolverInterface $scopeResolver */ public function __construct( SearchCriteriaBuilder $searchCriteriaBuilder, CategoryRepositoryInterface $categoryRepositoryInterface, DataProvider\Category $categoryDataProvider, FilterBuilder $filterBuilder, FilterGroupBuilder $filterGroupBuilder, ScopeResolverInterface $scopeResolver ) { $this->searchCriteriaBuilder = $searchCriteriaBuilder; $this->categoryRepositoryInterface = $categoryRepositoryInterface; $this->categoryDataProvider = $categoryDataProvider; $this->filterBuilder = $filterBuilder; $this->filterGroupBuilder = $filterGroupBuilder; $this->scopeResolver = $scopeResolver; } /** * @inheritdoc */ public function resolve( Field $field, $context, ResolveInfo $info, array $value = null, array $args = null ) { $searchCriteria = $this->searchCriteriaBuilder->build('magefan_blog_categories', $args); $statusFilter = $this->filterBuilder ->setField('is_active') ->setValue(1) ->setConditionType('eq') ->create(); $filterGroups = $searchCriteria->getFilterGroups(); $filterGroups[] = $this->filterGroupBuilder->addFilter($statusFilter)->create(); $scope = $this->scopeResolver->getScope()->getId(); $scopeFilter = $this->filterBuilder ->setField('store_id') ->setValue($scope) ->setConditionType('eq') ->create(); $filterGroups[] = $this->filterGroupBuilder->addFilter($scopeFilter)->create(); $searchCriteria->setFilterGroups($filterGroups); $searchResult = $this->categoryRepositoryInterface->getList($searchCriteria); $items = $searchResult->getItems(); $fields = $info ? $info->getFieldSelection(10) : null; foreach ($items as $k => $data) { $items[$k] = $this->categoryDataProvider->getData( $data['category_id'], isset($fields['items']) ? $fields['items'] : null ); } return [ 'total_count' => $searchResult->getTotalCount(), 'items' => $items ]; } }