Add route for getting the current hubs
This commit is contained in:
@@ -2,10 +2,12 @@
|
|||||||
|
|
||||||
namespace App\Http\Controllers\Api;
|
namespace App\Http\Controllers\Api;
|
||||||
|
|
||||||
|
use Illuminate\Http\Request;
|
||||||
|
use Illuminate\Support\Facades\Cache;
|
||||||
|
|
||||||
use App\Repositories\AirportRepository;
|
use App\Repositories\AirportRepository;
|
||||||
use App\Http\Resources\Airport as AirportResource;
|
use App\Http\Resources\Airport as AirportResource;
|
||||||
|
|
||||||
use Illuminate\Support\Facades\Cache;
|
|
||||||
use VaCentral\Airport as AirportLookup;
|
use VaCentral\Airport as AirportLookup;
|
||||||
|
|
||||||
class AirportController extends RestController
|
class AirportController extends RestController
|
||||||
@@ -21,9 +23,30 @@ class AirportController extends RestController
|
|||||||
/**
|
/**
|
||||||
* Return all the airports, paginated
|
* Return all the airports, paginated
|
||||||
*/
|
*/
|
||||||
public function index()
|
public function index(Request $request)
|
||||||
{
|
{
|
||||||
$airports = $this->airportRepo->orderBy('icao', 'asc')->paginate(50);
|
$where = [];
|
||||||
|
if ($request->filled('hub')) {
|
||||||
|
$where['hub'] = $request->get('hub');
|
||||||
|
}
|
||||||
|
|
||||||
|
$airports = $this->airportRepo
|
||||||
|
->whereOrder($where, 'icao', 'asc')
|
||||||
|
->paginate(50);
|
||||||
|
|
||||||
|
return AirportResource::collection($airports);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function index_hubs()
|
||||||
|
{
|
||||||
|
$where = [
|
||||||
|
'hub' => true,
|
||||||
|
];
|
||||||
|
|
||||||
|
$airports = $this->airportRepo
|
||||||
|
->whereOrder($where, 'icao', 'asc')
|
||||||
|
->paginate(50);
|
||||||
|
|
||||||
return AirportResource::collection($airports);
|
return AirportResource::collection($airports);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -49,4 +49,18 @@ abstract class BaseRepository extends \Prettus\Repository\Eloquent\BaseRepositor
|
|||||||
{
|
{
|
||||||
return $this->orderBy($sort_by, 'desc')->paginate($count);
|
return $this->orderBy($sort_by, 'desc')->paginate($count);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Find records with a WHERE clause but also sort them
|
||||||
|
* @param $where
|
||||||
|
* @param $sort_by
|
||||||
|
* @param $order_by
|
||||||
|
* @return $this
|
||||||
|
*/
|
||||||
|
public function whereOrder($where, $sort_by, $order_by)
|
||||||
|
{
|
||||||
|
return $this->scopeQuery(function($query) use ($where, $sort_by, $order_by) {
|
||||||
|
return $query->where($where)->orderBy($sort_by, $order_by);
|
||||||
|
});
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -8,6 +8,7 @@ Route::group([], function()
|
|||||||
Route::get('acars', 'AcarsController@index');
|
Route::get('acars', 'AcarsController@index');
|
||||||
|
|
||||||
Route::get('airports', 'AirportController@index');
|
Route::get('airports', 'AirportController@index');
|
||||||
|
Route::get('airports/hubs', 'AirportController@index_hubs');
|
||||||
Route::get('airports/{id}', 'AirportController@get');
|
Route::get('airports/{id}', 'AirportController@get');
|
||||||
Route::get('airports/{id}/lookup', 'AirportController@lookup');
|
Route::get('airports/{id}/lookup', 'AirportController@lookup');
|
||||||
|
|
||||||
|
|||||||
@@ -90,7 +90,7 @@ class ApiTest extends TestCase
|
|||||||
public function testGetAllAirports()
|
public function testGetAllAirports()
|
||||||
{
|
{
|
||||||
$user = factory(App\Models\User::class)->create();
|
$user = factory(App\Models\User::class)->create();
|
||||||
factory(App\Models\Airport::class, 120)->create();
|
factory(App\Models\Airport::class, 70)->create();
|
||||||
|
|
||||||
$response = $this->user_get($user, '/api/airports/')
|
$response = $this->user_get($user, '/api/airports/')
|
||||||
->assertStatus(200)
|
->assertStatus(200)
|
||||||
@@ -106,6 +106,18 @@ class ApiTest extends TestCase
|
|||||||
->assertJsonCount(20, 'data');
|
->assertJsonCount(20, 'data');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function testGetAllAirportsHubs()
|
||||||
|
{
|
||||||
|
$user = factory(App\Models\User::class)->create();
|
||||||
|
|
||||||
|
factory(App\Models\Airport::class, 10)->create();
|
||||||
|
factory(App\Models\Airport::class)->create(['hub' => 1]);
|
||||||
|
|
||||||
|
$this->user_get($user, '/api/airports/hubs')
|
||||||
|
->assertStatus(200)
|
||||||
|
->assertJsonCount(1, 'data');
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Test getting the subfleets
|
* Test getting the subfleets
|
||||||
*/
|
*/
|
||||||
|
|||||||
Reference in New Issue
Block a user