_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); } }