123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144 |
- <?php
- /**
- * Copyright © Magento, Inc. All rights reserved.
- * See COPYING.txt for license details.
- */
- namespace Magento\Framework\Api;
- use Magento\Framework\Api\Search\FilterGroupBuilder;
- /**
- * Builder for SearchCriteria Service Data Object
- */
- class SearchCriteriaBuilder extends AbstractSimpleObjectBuilder
- {
- /**
- * @var FilterGroupBuilder
- */
- protected $_filterGroupBuilder;
- /**
- * @var \Magento\Framework\Api\FilterBuilder
- */
- protected $filterBuilder;
- /**
- * @param ObjectFactory $objectFactory
- * @param FilterGroupBuilder $filterGroupBuilder
- * @param FilterBuilder $filterBuilder
- */
- public function __construct(
- ObjectFactory $objectFactory,
- FilterGroupBuilder $filterGroupBuilder,
- FilterBuilder $filterBuilder
- ) {
- parent::__construct(
- $objectFactory
- );
- $this->_filterGroupBuilder = $filterGroupBuilder;
- $this->filterBuilder = $filterBuilder;
- }
- /**
- * Builds the SearchCriteria Data Object
- *
- * @return SearchCriteria
- */
- public function create()
- {
- //Initialize with empty array if not set
- if (empty($this->data[SearchCriteria::FILTER_GROUPS])) {
- $this->_set(SearchCriteria::FILTER_GROUPS, []);
- }
- return parent::create();
- }
- /**
- * Create a filter group based on the filter array provided and add to the filter groups
- *
- * @param \Magento\Framework\Api\Filter[] $filter
- * @return $this
- */
- public function addFilters(array $filter)
- {
- $this->data[SearchCriteria::FILTER_GROUPS][] = $this->_filterGroupBuilder->setFilters($filter)->create();
- return $this;
- }
- /**
- * @param string $field
- * @param mixed $value
- * @param string $conditionType
- * @return $this
- */
- public function addFilter($field, $value, $conditionType = 'eq')
- {
- $this->addFilters([
- $this->filterBuilder->setField($field)
- ->setValue($value)
- ->setConditionType($conditionType)
- ->create()
- ]);
- return $this;
- }
- /**
- * Set filter groups
- *
- * @param \Magento\Framework\Api\Search\FilterGroup[] $filterGroups
- * @return $this
- */
- public function setFilterGroups(array $filterGroups)
- {
- return $this->_set(SearchCriteria::FILTER_GROUPS, $filterGroups);
- }
- /**
- * Add sort order
- *
- * @param SortOrder $sortOrder
- * @return $this
- */
- public function addSortOrder($sortOrder)
- {
- if (!isset($this->data[SearchCriteria::SORT_ORDERS])) {
- $this->data[SearchCriteria::SORT_ORDERS] = [];
- }
- $this->data[SearchCriteria::SORT_ORDERS][] = $sortOrder;
- return $this;
- }
- /**
- * Set sort orders
- *
- * @param SortOrder[] $sortOrders
- * @return $this
- */
- public function setSortOrders(array $sortOrders)
- {
- return $this->_set(SearchCriteria::SORT_ORDERS, $sortOrders);
- }
- /**
- * Set page size
- *
- * @param int $pageSize
- * @return $this
- */
- public function setPageSize($pageSize)
- {
- return $this->_set(SearchCriteria::PAGE_SIZE, $pageSize);
- }
- /**
- * Set current page
- *
- * @param int $currentPage
- * @return $this
- */
- public function setCurrentPage($currentPage)
- {
- return $this->_set(SearchCriteria::CURRENT_PAGE, $currentPage);
- }
- }
|