/** * @param DataGridInputState $state * @return GenericEntityFilter * @throws \Exception */ public function createGenericEntityFilterByState(DataGridInputState $state) { $filter = new GenericEntityFilter($state->getSourceDTO()->getAccessQuery()); $properties = $this->createEntityPropertiesArray($state->getSourceDTO()); $restrictiveProperties = DataGridEntityProperty::getRestrictiveProperties($properties); $headerProperties = DataGridEntityProperty::getHeaderProperties($properties); if (count($restrictiveProperties) > 0) { $filter->setRestrictiveProperties($restrictiveProperties); } if (null !== $state->getOrderByDirection() && null !== $state->getOrderByField()) { $orderFieldExploded = explode('.', $state->getOrderByField()); if (count($orderFieldExploded) < 2) { throw new \Exception('misformatted propertyId found on field ' . $state->getOrderByField()); } $filter->setOrderedBy(new OrderBy(new GenericEntityProperty($orderFieldExploded[0], $orderFieldExploded[1]), $state->getOrderByDirection())); } if (null !== $state->getFilterStr()) { $filter->setSearch(new Search($state->getFilterStr(), $headerProperties)); } if (null !== $state->getPage() && null !== $state->getLimit()) { $filter->setOffset($state->getPage() * $state->getLimit()); } if (null !== $state->getLimit()) { $filter->setLimit($state->getLimit()); } return $filter; }
protected function createParametersArray(GenericEntityFilter $filter) { $parameters = array(); if (null !== $filter->getRestrictiveProperties()) { $i = 0; foreach ($filter->getRestrictiveProperties() as $property) { $parameters['restrictiveProperty' . $i] = $property->getPropertyValue(); $i++; } } if ($filter->getSearch()) { $parameters['searchStr'] = $this->createLikedSerachString($filter->getSearch()->getSearchStr()); } return $parameters; }