Add route for getting the current hubs

This commit is contained in:
Nabeel Shahzad
2018-01-05 15:30:35 -06:00
parent 927be50d9b
commit 60256ab213
4 changed files with 54 additions and 4 deletions

View File

@@ -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);
}

View File

@@ -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);
});
}
}

View File

@@ -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');

View File

@@ -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
*/