/** * 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(); }