/**
  * @ApiDoc()
  */
 public function cgetAction(ParamFetcher $paramFetcher, Request $request)
 {
     $dynamicRequestParam = new QueryParam();
     $dynamicRequestParam->name = "limit";
     $dynamicRequestParam->requirements = "\\d+";
     $dynamicRequestParam->default = '25';
     $paramFetcher->addParam($dynamicRequestParam);
     $dynamicRequestParam = new QueryParam();
     $dynamicRequestParam->name = "start";
     $dynamicRequestParam->requirements = "\\d+";
     $dynamicRequestParam->default = '0';
     $paramFetcher->addParam($dynamicRequestParam);
     $dynamicRequestParam = new QueryParam();
     $dynamicRequestParam->name = "sort";
     $dynamicRequestParam->requirements = "[\\w_]+";
     $dynamicRequestParam->default = null;
     $paramFetcher->addParam($dynamicRequestParam);
     $dynamicRequestParam = new QueryParam();
     $dynamicRequestParam->name = "filter";
     $dynamicRequestParam->default = null;
     $paramFetcher->addParam($dynamicRequestParam);
     $dynamicRequestParam = new QueryParam();
     $dynamicRequestParam->name = "query";
     $dynamicRequestParam->default = null;
     $paramFetcher->addParam($dynamicRequestParam);
     $select = $this->_getSelect($paramFetcher, $request);
     $restColumns = array_keys($this->_model->getSerializationColumns(array('rest_read', 'rest')));
     $exprColumns = $this->_model->getExprColumns();
     foreach (array_intersect($restColumns, $exprColumns) as $i) {
         $select->expr($i);
     }
     $rows = $this->_model->getRows($select);
     foreach ($rows as $row) {
         $this->denyAccessUnlessGranted('read', $row);
     }
     $view = View::create();
     $view->setData(array('data' => $rows, 'total' => $this->_model->countRows($select)));
     $ctx = new Context();
     $ctx->setGroups(array('rest_read', 'rest'));
     $view->setContext($ctx);
     return $view;
 }
 /**
  * Add parameter manually to @Rest\QueryParam
  */
 protected function addQueryParam(\FOS\RestBundle\Request\ParamFetcher $paramFetcher, $paramArray)
 {
     $param = new Rest\QueryParam();
     foreach ($paramArray as $key => $value) {
         if (!property_exists($param, $key)) {
             throw new UnprocessableEntityHttpException();
         }
         $param->{$key} = $value;
     }
     $paramFetcher->addParam($param);
     return $paramFetcher;
 }