コード例 #1
0
 /**
  * Override the default index function to get many resources.
  * @property int filters['improvedId']
  * @property int filters['preservedId']
  * @return \Symfony\Component\HttpFoundation\Response
  */
 public function index()
 {
     $apiRequest = RequestFactory::create();
     $page = $apiRequest->getPage();
     if (!$page->size()) {
         $page->setSize($this->pageSize);
     }
     $fields = $apiRequest->getFields();
     $sorting = $apiRequest->getSort();
     $included = $apiRequest->getIncludedRelationships();
     $filters = $apiRequest->getFilters();
     $resource = new ListResource($this->serializer, $page, $fields, $sorting, $included, $filters);
     if ($filters == NULL) {
         $totalAmount = $this->totalAmountResourceCallable();
         $results = $this->listResourceCallable();
         $controllerAction = '\\' . get_called_class() . '@index';
         $uri = $this->uriGenerator($controllerAction);
         return $this->addHeaders($resource->get($totalAmount, $results, $uri, get_class($this->getDataModel())));
     } else {
         $improvedId = $filters['improvedParam'];
         $preservedId = $filters['preservedParam'];
         $totalAmount = function () use($improvedId, $preservedId) {
             $id = (new Solution())->getKeyName();
             return Solution::query()->where(['improvedParam' => $improvedId, 'preservedParam' => $preservedId])->get([$id])->count();
         };
         $results = function () use($improvedId, $preservedId) {
             return EloquentHelper::paginate($this->serializer, Solution::query()->where(['improvedParam' => $improvedId, 'preservedParam' => $preservedId]))->get();
         };
         $params = array('improvedParam' => $improvedId, 'preservedParam' => $preservedId);
         $queryString = http_build_query($params);
         $controllerAction = '\\' . get_called_class() . '@index';
         $uri = $this->uriGenerator($controllerAction);
         return $resource->get($totalAmount, $results, $uri, Solution::class);
     }
 }
コード例 #2
0
 /**
  * @return \Symfony\Component\HttpFoundation\Response
  */
 public function listAction()
 {
     $resource = new ListResource($this->serializer);
     $totalAmount = $this->totalAmountResourceCallable();
     $results = $this->listResourceCallable();
     $controllerAction = '\\' . get_class($this) . '@listAction';
     $uri = action($controllerAction, []);
     return $this->addHeaders($resource->get($totalAmount, $results, $uri, get_class($this->getDataModel())));
 }
コード例 #3
0
 /**
  * @param int $pageSize
  *
  * @return \Symfony\Component\HttpFoundation\Response
  */
 public function listAction($pageSize = 10)
 {
     $apiRequest = RequestFactory::create();
     $page = $apiRequest->getPage();
     if (!$page->size()) {
         $page->setSize($pageSize);
     }
     $resource = new ListResource($this->serializer, $page, $apiRequest->getFields(), $apiRequest->getSort(), $apiRequest->getIncludedRelationships(), $apiRequest->getFilters());
     $response = $resource->get($this->totalAmountResourceCallable(), $this->listResourceCallable(), action('\\' . get_class($this) . '@listAction', []), get_class($this->getDataModel()));
     return $this->addHeaders($response);
 }
コード例 #4
0
 /**
  * @param \Exception $e
  *
  * @return \Symfony\Component\HttpFoundation\Response
  *
  * @throws \Exception
  */
 public function getErrorResponse(\Exception $e)
 {
     if (config('app.debug')) {
         throw $e;
     }
     return parent::getErrorResponse($e);
 }
コード例 #5
0
 /**
  * Get many resources.
  *
  * @param int $pageSize
  *
  * @return \Symfony\Component\HttpFoundation\Response
  */
 public function index($pageSize = 10)
 {
     $apiRequest = RequestFactory::create();
     $page = $apiRequest->getPage();
     if (!$page->size()) {
         $page->setSize($pageSize);
     }
     $fields = $apiRequest->getFields();
     $sorting = $apiRequest->getSort();
     $included = $apiRequest->getIncludedRelationships();
     $filters = $apiRequest->getFilters();
     $resource = new ListResource($this->serializer, $page, $fields, $sorting, $included, $filters);
     $totalAmount = $this->totalAmountResourceCallable();
     $results = $this->listResourceCallable();
     $controllerAction = '\\' . get_class($this) . '@index';
     $uri = action($controllerAction, []);
     return $this->addHeaders($resource->get($totalAmount, $results, $uri, get_class($this->getDataModel())));
 }
コード例 #6
0
 public function testItCanGetWillReturnErrorResponseBecauseOfInvalidParams()
 {
     $this->fields = new Fields();
     $this->fields->addField('superhero', 'power');
     $this->resource = new ListResource($this->serializer, $this->page, $this->fields, $this->sorting, $this->included, $this->filters);
     $response = $this->resource->get($this->totalAmountCallable, $this->resultsCallable, $this->routeUri, Post::class);
     $this->assertInstanceOf(Response::class, $response);
     $this->assertEquals(400, $response->getStatusCode());
 }
コード例 #7
0
 /**
  * @param Request $request
  *
  * @return \Symfony\Component\HttpFoundation\Response
  */
 public function getAuthorByBook(Request $request)
 {
     $apiRequest = RequestFactory::create();
     $page = $apiRequest->getPage();
     if (!$page->size()) {
         $page->setSize(10);
         //Default elements per page
     }
     $resource = new ListResource($this->serializer, $page, $apiRequest->getFields(), $apiRequest->getSort(), $apiRequest->getIncludedRelationships(), $apiRequest->getFilters());
     $totalAmount = function () use($request) {
         $id = (new Author())->getKeyName();
         return Author::query()->where('id', '=', $request->author_id)->get([$id])->count();
     };
     $results = function () use($request) {
         return EloquentHelper::paginate($this->serializer, Author::query()->where('id', '=', $request->author_id))->get();
     };
     $uri = route('api.authors.show', ['id' => $request->author_id]);
     return $resource->get($totalAmount, $results, $uri, Author::class);
 }
 /**
  * @param Request $request
  *
  * @return \Symfony\Component\HttpFoundation\Response
  */
 public function getOrdersByEmployee(Request $request)
 {
     $resource = new ListResource($this->serializer);
     $totalAmount = function () use($request) {
         $id = (new Orders())->getKeyName();
         return Orders::query()->where('employee_id', '=', $request->employee_id)->get([$id])->count();
     };
     $results = function () use($request) {
         return EloquentHelper::paginate($this->serializer, Orders::query()->where('employee_id', '=', $request->employee_id))->get();
     };
     $uri = route('employees.orders', ['employee_id' => $request->employee_id]);
     return $resource->get($totalAmount, $results, $uri, Orders::class);
 }
コード例 #9
0
 /**
  * @param $id
  *
  * @return \Symfony\Component\HttpFoundation\Response
  */
 public function getOrdersByEmployee($id)
 {
     $apiRequest = RequestFactory::create();
     $page = $apiRequest->getPage();
     if (!$page->size()) {
         $page->setSize($this->pageSize);
     }
     $fields = $apiRequest->getFields();
     $sorting = $apiRequest->getSort();
     $included = $apiRequest->getIncludedRelationships();
     $filters = $apiRequest->getFilters();
     $resource = new ListResource($this->serializer, $page, $fields, $sorting, $included, $filters);
     $totalAmount = function () use($id) {
         $idKey = (new Orders())->getKeyName();
         return Orders::query()->where('employee_id', '=', $id)->get([$idKey])->count();
     };
     $results = function () use($id) {
         return EloquentHelper::paginate($this->serializer, Orders::query()->where('employee_id', '=', $id))->get();
     };
     $uri = route('employees.orders', ['employee_id' => $id]);
     return $resource->get($totalAmount, $results, $uri, Orders::class);
 }