tethys/routes/api.php

69 lines
2.3 KiB
PHP
Raw Permalink Normal View History

2018-08-06 12:30:51 +00:00
<?php
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Route;
2018-09-10 13:09:10 +00:00
use App\Models\Person;
2018-08-06 12:30:51 +00:00
/*
|--------------------------------------------------------------------------
| API Routes
|--------------------------------------------------------------------------
|
| Here is where you can register API routes for your application. These
| routes are loaded by the RouteServiceProvider within a group which
| is assigned the "api" middleware group. Enjoy building your API!
|
*/
Route::middleware('auth:api')->get('/user', function (Request $request) {
return $request->user();
});
2018-09-10 13:09:10 +00:00
Route::get('/oai', 'Oai\RequestController@identify');
Route::get('/api/persons', function () {
$request = request();
2018-10-18 14:51:46 +00:00
//$query = Person::query();//->with('group');
$query = Person::where('status', true);
2018-09-10 13:09:10 +00:00
// handle sort option
//if (request()->has('sort')) {
if (null !== ($request->input('sort'))) {
// handle multisort
$sorts = explode(',', request()->sort);
foreach ($sorts as $sort) {
list($sortCol, $sortDir) = explode('|', $sort);
$query = $query->orderBy($sortCol, $sortDir);
}
} else {
$query = $query->orderBy('id', 'asc');
}
2018-10-18 14:51:46 +00:00
//handle filter
2018-09-10 13:09:10 +00:00
if ($request->exists('filter')) {
$query->where(function ($q) use ($request) {
$value = "%{$request->filter}%";
2018-09-14 16:16:02 +00:00
$q->where('first_name', 'like', $value)
2018-10-18 14:51:46 +00:00
->orWhere('last_name', 'like', $value)
2018-09-10 13:09:10 +00:00
->orWhere('email', 'like', $value);
});
}
$perPage = request()->has('per_page') ? (int) request()->per_page : null;
// $pagination = $query->with('address')->paginate($perPage);
$pagination = $query->paginate($perPage);
2018-10-18 14:51:46 +00:00
// $pagination = $query->get();
2018-09-10 13:09:10 +00:00
$pagination->appends([
'sort' => request()->sort,
'filter' => request()->filter,
'per_page' => request()->per_page
]);
// The headers 'Access-Control-Allow-Origin' and 'Access-Control-Allow-Methods'
// are to allow you to call this from any domain (see CORS for more info).
// This is for local testing only. You should not do this in production server,
// unless you know what it means.
return response()
->json($pagination)
->header('Access-Control-Allow-Origin', '*')
->header('Access-Control-Allow-Methods', 'GET');
});