Example #1
0
 /**
  * @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;
 }