/**
  * Resource index action.
  *
  * @param Request $request
  * @return Response
  */
 public function indexAction(Request $request)
 {
     $criteria = $this->config->getCriteria();
     $sorting = $this->config->getSorting();
     $repository = $this->getRepository();
     if ($this->config->isPaginated()) {
         $resources = $this->resourceResolver->getResource($repository, 'createPaginator', array($criteria, $sorting));
         $resources->setCurrentPage($request->get('page', 1), true, true);
         $resources->setMaxPerPage($this->config->getPaginationMaxPerPage());
         if ($this->config->isApiRequest()) {
             $resources = $this->getPagerfantaFactory()->createRepresentation($resources, new Route($request->attributes->get('_route'), array_merge($request->attributes->get('_route_params'), $request->query->all())));
         }
     } else {
         $resources = $this->resourceResolver->getResource($repository, 'findBy', array($criteria, $sorting, $this->config->getLimit()));
     }
     $view = $this->view()->setTemplate($this->config->getTemplate('index.html'))->setTemplateVar($this->config->getPluralResourceName())->setData($resources);
     $response = $this->handleView($view);
     if ($response->isSuccessful()) {
         $this->actionLogger && $this->actionLogger->indexLog();
     }
     return $this->prepareResponse($response);
 }