Add route for getting the current hubs
This commit is contained in:
@@ -2,10 +2,12 @@
|
||||
|
||||
namespace App\Http\Controllers\Api;
|
||||
|
||||
use Illuminate\Http\Request;
|
||||
use Illuminate\Support\Facades\Cache;
|
||||
|
||||
use App\Repositories\AirportRepository;
|
||||
use App\Http\Resources\Airport as AirportResource;
|
||||
|
||||
use Illuminate\Support\Facades\Cache;
|
||||
use VaCentral\Airport as AirportLookup;
|
||||
|
||||
class AirportController extends RestController
|
||||
@@ -21,9 +23,30 @@ class AirportController extends RestController
|
||||
/**
|
||||
* 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);
|
||||
}
|
||||
|
||||
|
||||
@@ -49,4 +49,18 @@ abstract class BaseRepository extends \Prettus\Repository\Eloquent\BaseRepositor
|
||||
{
|
||||
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('airports', 'AirportController@index');
|
||||
Route::get('airports/hubs', 'AirportController@index_hubs');
|
||||
Route::get('airports/{id}', 'AirportController@get');
|
||||
Route::get('airports/{id}/lookup', 'AirportController@lookup');
|
||||
|
||||
|
||||
@@ -90,7 +90,7 @@ class ApiTest extends TestCase
|
||||
public function testGetAllAirports()
|
||||
{
|
||||
$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/')
|
||||
->assertStatus(200)
|
||||
@@ -106,6 +106,18 @@ class ApiTest extends TestCase
|
||||
->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
|
||||
*/
|
||||
|
||||
Reference in New Issue
Block a user