Example #1
0
 /**
  * Display a listing of the resource.
  *
  * @return PaulVL\JsonApi\Response
  */
 public function index(Request $request)
 {
     $response = new Response();
     $class = $this->model_class;
     $raw_query = $request->get('q', null);
     $per_page = $request->get('_paginate', null);
     $current_page = $request->get('_page', 1);
     $data = $class::orderBy('created_at', 'asc');
     $url = $request->url();
     $inputs = $request->all();
     if (!empty($raw_query)) {
         $queries = QueryHelper::getRawQueriesFromRequest($request);
         if (!QueryHelper::validateRawQueriesArray($queries)) {
             return $response->responseUnprocessableEntity();
         }
         if (!($data = QueryHelper::rawQueryData($data, $queries))) {
             return $response->responseUnprocessableEntity();
         }
         $url .= '?q=' . $raw_query;
     }
     $column_query = QueryHelper::columnQueryData($data, $inputs, (new $class())->getVisibleAttributes(), !empty($raw_query));
     $data = $column_query['builder'];
     $url .= $column_query['has_parameters'] ? $column_query['url'] : '';
     $data = $data->get();
     if (!empty($per_page)) {
         if (!PaginationHelper::validatePagination($per_page, $current_page)) {
             return $response->responseUnprocessableEntity();
         }
         $pagination_information = PaginationHelper::getPaginationInfo($data, $per_page, $current_page, $url, !empty($raw_query) || $column_query['has_parameters']);
         $data = $data->forPage($current_page, $per_page);
         $response->addMeta($pagination_information);
     }
     /* MANUAL DATA HANDLING
       	$handler = new DataHandler($class::all());
        $response->data = $handler->getApiJsonableData(true);
           */
     //$response->withoutRelations();
     $response->handleData($data);
     return $response->response();
 }