Add /api/fleet to get subfleets and all the aircraft #120
This commit is contained in:
@@ -4,7 +4,7 @@ use Faker\Generator as Faker;
|
||||
|
||||
$factory->define(App\Models\Aircraft::class, function (Faker $faker) {
|
||||
return [
|
||||
'id' => $faker->unique()->numberBetween(10, 10000),
|
||||
'id' => $faker->unique()->numberBetween(10, 100000),
|
||||
'subfleet_id' => function() {
|
||||
return factory(App\Models\Subfleet::class)->create()->id;
|
||||
},
|
||||
|
||||
21
app/Database/factories/RankFactory.php
Normal file
21
app/Database/factories/RankFactory.php
Normal file
@@ -0,0 +1,21 @@
|
||||
<?php
|
||||
|
||||
use Faker\Generator as Faker;
|
||||
|
||||
/*
|
||||
* id: 2
|
||||
name: Junior First Officer
|
||||
hours: 10
|
||||
auto_approve_acars: 1
|
||||
auto_approve_manual: 1
|
||||
*/
|
||||
$factory->define(App\Models\Rank::class, function (Faker $faker) {
|
||||
return [
|
||||
'id' => $faker->unique()->numberBetween(10, 10000),
|
||||
'name' => $faker->unique()->text(50),
|
||||
'hours' => $faker->numberBetween(10, 50),
|
||||
'auto_approve_acars' => 0,
|
||||
'auto_approve_manual' => 0,
|
||||
'auto_promote' => 0,
|
||||
];
|
||||
});
|
||||
@@ -2,17 +2,14 @@
|
||||
|
||||
namespace App\Http\Controllers\Api;
|
||||
|
||||
use Log;
|
||||
use Illuminate\Http\Request;
|
||||
use App\Http\Controllers\AppBaseController;
|
||||
|
||||
use App\Models\Acars;
|
||||
use App\Services\GeoService;
|
||||
use App\Repositories\AcarsRepository;
|
||||
use App\Repositories\PirepRepository;
|
||||
|
||||
|
||||
class AcarsController extends AppBaseController
|
||||
class AcarsController extends RestController
|
||||
{
|
||||
protected $acarsRepo, $geoSvc, $pirepRepo;
|
||||
|
||||
|
||||
@@ -3,13 +3,12 @@
|
||||
namespace App\Http\Controllers\Api;
|
||||
|
||||
use App\Repositories\AirportRepository;
|
||||
use App\Http\Controllers\AppBaseController;
|
||||
use App\Http\Resources\Airport as AirportResource;
|
||||
|
||||
use Illuminate\Support\Facades\Cache;
|
||||
use VaCentral\Airport as AirportLookup;
|
||||
|
||||
class AirportController extends AppBaseController
|
||||
class AirportController extends RestController
|
||||
{
|
||||
protected $airportRepo;
|
||||
|
||||
|
||||
34
app/Http/Controllers/Api/FleetController.php
Normal file
34
app/Http/Controllers/Api/FleetController.php
Normal file
@@ -0,0 +1,34 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Controllers\Api;
|
||||
|
||||
use App\Repositories\AircraftRepository;
|
||||
use App\Repositories\SubfleetRepository;
|
||||
|
||||
use App\Http\Resources\Subfleet as SubfleetResource;
|
||||
|
||||
class FleetController extends RestController
|
||||
{
|
||||
protected $aircraftRepo, $subfleetRepo;
|
||||
|
||||
public function __construct(
|
||||
AircraftRepository $aircraftRepo,
|
||||
SubfleetRepository $airportRepo
|
||||
) {
|
||||
$this->aircraftRepo = $airportRepo;
|
||||
$this->subfleetRepo = $airportRepo;
|
||||
}
|
||||
|
||||
/**
|
||||
* Return all the subfleets and the aircraft and any other associated data
|
||||
* Paginated
|
||||
*/
|
||||
public function index()
|
||||
{
|
||||
$airports = $this->subfleetRepo
|
||||
->with(['aircraft', 'airline', 'fares', 'ranks'])
|
||||
->paginate(50);
|
||||
|
||||
return SubfleetResource::collection($airports);
|
||||
}
|
||||
}
|
||||
@@ -2,16 +2,14 @@
|
||||
|
||||
namespace App\Http\Controllers\Api;
|
||||
|
||||
use Log;
|
||||
use Illuminate\Http\Request;
|
||||
|
||||
use App\Http\Controllers\AppBaseController;
|
||||
use App\Repositories\FlightRepository;
|
||||
use App\Http\Resources\Flight as FlightResource;
|
||||
use Prettus\Repository\Exceptions\RepositoryException;
|
||||
|
||||
|
||||
class FlightController extends AppBaseController
|
||||
class FlightController extends RestController
|
||||
{
|
||||
protected $flightRepo;
|
||||
|
||||
|
||||
@@ -3,10 +3,8 @@
|
||||
namespace App\Http\Controllers\Api;
|
||||
|
||||
use PragmaRX\Version\Package\Facade as Version;
|
||||
use App\Http\Controllers\AppBaseController;
|
||||
|
||||
|
||||
class StatusController extends AppBaseController
|
||||
class StatusController extends RestController
|
||||
{
|
||||
public function status()
|
||||
{
|
||||
|
||||
@@ -5,18 +5,15 @@ namespace App\Http\Controllers\Api;
|
||||
use Auth;
|
||||
use Illuminate\Http\Request;
|
||||
|
||||
use App\Http\Controllers\AppBaseController;
|
||||
use App\Repositories\UserRepository;
|
||||
|
||||
use App\Models\User;
|
||||
use App\Models\UserBid;
|
||||
|
||||
use App\Http\Resources\Flight as FlightResource;
|
||||
use App\Http\Resources\User as UserResource;
|
||||
use App\Http\Resources\UserBid as UserBidResource;
|
||||
|
||||
|
||||
class UserController extends AppBaseController
|
||||
class UserController extends RestController
|
||||
{
|
||||
protected $userRepo;
|
||||
|
||||
|
||||
@@ -41,31 +41,31 @@ class Subfleet extends BaseModel
|
||||
|
||||
public function aircraft()
|
||||
{
|
||||
return $this->hasMany('App\Models\Aircraft', 'subfleet_id');
|
||||
return $this->hasMany(Aircraft::class, 'subfleet_id');
|
||||
}
|
||||
|
||||
public function airline()
|
||||
{
|
||||
return $this->belongsTo('App\Models\Airline', 'airline_id');
|
||||
return $this->belongsTo(Airline::class, 'airline_id');
|
||||
}
|
||||
|
||||
public function fares()
|
||||
{
|
||||
return $this->belongsToMany(
|
||||
'App\Models\Fare',
|
||||
Fare::class,
|
||||
'subfleet_fare'
|
||||
)->withPivot('price', 'cost', 'capacity');
|
||||
}
|
||||
|
||||
public function flights()
|
||||
{
|
||||
return $this->belongsToMany('App\Models\Flight', 'subfleet_flight');
|
||||
return $this->belongsToMany(Flight::class, 'subfleet_flight');
|
||||
}
|
||||
|
||||
public function ranks()
|
||||
{
|
||||
return $this->belongsToMany(
|
||||
'App\Models\Ranks',
|
||||
Rank::class,
|
||||
'subfleet_rank'
|
||||
)->withPivot('acars_pay', 'manual_pay');
|
||||
}
|
||||
|
||||
@@ -11,11 +11,14 @@ Route::group([], function()
|
||||
Route::get('airports/{id}', 'AirportController@get');
|
||||
Route::get('airports/{id}/lookup', 'AirportController@lookup');
|
||||
|
||||
Route::get('fleet', 'FleetController@index');
|
||||
|
||||
Route::get('flights/search', 'FlightController@search');
|
||||
Route::get('flights/{id}', 'FlightController@get');
|
||||
|
||||
Route::get('pireps/{id}/acars', 'PirepController@acars_get');
|
||||
Route::get('pireps/{id}/geojson', 'PirepController@acars_get');
|
||||
Route::get('pireps/{id}/route', 'PirepController@route_get');
|
||||
Route::get('pireps/{id}/acars/positions', 'PirepController@acars_get');
|
||||
Route::get('pireps/{id}/acars/geojson', 'PirepController@acars_geojson');
|
||||
|
||||
Route::get('status', 'StatusController@status');
|
||||
});
|
||||
@@ -32,16 +35,13 @@ Route::group(['middleware' => ['api.auth']], function ()
|
||||
Route::delete('pireps/{id}/cancel', 'PirepController@cancel');
|
||||
|
||||
Route::get('pireps/{id}/acars/geojson', 'PirepController@acars_geojson');
|
||||
Route::get('pireps/{id}/acars/position', 'PirepController@acars_get');
|
||||
Route::post('pireps/{id}/acars/position', 'PirepController@acars_store');
|
||||
|
||||
Route::get('pireps/{id}/acars/positions', 'PirepController@acars_get');
|
||||
Route::post('pireps/{id}/acars/positions', 'PirepController@acars_store');
|
||||
|
||||
Route::post('pireps/{id}/acars/log', 'PirepController@acars_log');
|
||||
Route::post('pireps/{id}/acars/logs', 'PirepController@acars_log');
|
||||
|
||||
Route::get('pireps/{id}/route', 'PirepController@route_get');
|
||||
Route::post('pireps/{id}/route', 'PirepController@route_post');
|
||||
Route::delete('pireps/{id}/route', 'PirepController@route_delete');
|
||||
|
||||
|
||||
@@ -105,4 +105,38 @@ class ApiTest extends TestCase
|
||||
->assertStatus(200)
|
||||
->assertJsonCount(20, 'data');
|
||||
}
|
||||
|
||||
/**
|
||||
* Test getting the subfleets
|
||||
*/
|
||||
public function testGetSubfleets()
|
||||
{
|
||||
$user = factory(App\Models\User::class)->create();
|
||||
$subfleetA = factory(App\Models\Subfleet::class)->create();
|
||||
$subfleetB = factory(App\Models\Subfleet::class)->create();
|
||||
|
||||
$subfleetA_size = \random_int(2, 10);
|
||||
$subfleetB_size = \random_int(2, 10);
|
||||
factory(App\Models\Aircraft::class, $subfleetA_size)->create([
|
||||
'subfleet_id' => $subfleetA->id
|
||||
]);
|
||||
|
||||
factory(App\Models\Aircraft::class, $subfleetB_size)->create([
|
||||
'subfleet_id' => $subfleetB->id
|
||||
]);
|
||||
|
||||
$response = $this->user_get($user, '/api/fleet');
|
||||
$response->assertStatus(200);
|
||||
$body = $response->json();
|
||||
|
||||
foreach($body['data'] as $subfleet) {
|
||||
if($subfleet['id'] === $subfleetA->id) {
|
||||
$size = $subfleetA_size;
|
||||
} else {
|
||||
$size = $subfleetB_size;
|
||||
}
|
||||
|
||||
$this->assertCount($size, $subfleet['aircraft']);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user