Convert flight transformer to the native Laravel resource object
This commit is contained in:
@@ -7,27 +7,33 @@ use Illuminate\Http\Request;
|
||||
use App\Http\Controllers\AppBaseController;
|
||||
use App\Models\Transformers\FlightTransformer;
|
||||
use App\Repositories\FlightRepository;
|
||||
use App\Http\Resources\Flight as FlightResource;
|
||||
use Prettus\Repository\Exceptions\RepositoryException;
|
||||
|
||||
|
||||
class FlightController extends AppBaseController
|
||||
{
|
||||
protected $flightRepo;
|
||||
|
||||
public function __construct(
|
||||
FlightRepository $flightRepo
|
||||
) {
|
||||
public function __construct(FlightRepository $flightRepo) {
|
||||
$this->flightRepo = $flightRepo;
|
||||
}
|
||||
|
||||
public function get($id)
|
||||
{
|
||||
$flight = $this->flightRepo->find($id);
|
||||
return fractal($flight, new FlightTransformer())->respond();
|
||||
FlightResource::withoutWrapping();
|
||||
return new FlightResource($flight);
|
||||
}
|
||||
|
||||
public function search(Request $request)
|
||||
{
|
||||
$flights = $this->flightRepo->searchCriteria($request)->paginate();
|
||||
return fractal($flights, new FlightTransformer())->respond();
|
||||
try {
|
||||
$flights = $this->flightRepo->searchCriteria($request)->paginate();
|
||||
} catch (RepositoryException $e) {
|
||||
return response($e, 503);
|
||||
}
|
||||
return FlightResource::collection($flights);
|
||||
//return fractal($flights, new FlightTransformer())->respond();
|
||||
}
|
||||
}
|
||||
|
||||
36
app/Http/Resources/Flight.php
Normal file
36
app/Http/Resources/Flight.php
Normal file
@@ -0,0 +1,36 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Resources;
|
||||
|
||||
use Illuminate\Http\Resources\Json\Resource;
|
||||
|
||||
class Flight extends Resource
|
||||
{
|
||||
/**
|
||||
* Transform the resource into an array.
|
||||
*
|
||||
* @param \Illuminate\Http\Request $request
|
||||
* @return array
|
||||
*/
|
||||
public function toArray($request)
|
||||
{
|
||||
return [
|
||||
'id' => $this->id,
|
||||
'airline' => $this->airline,
|
||||
'flight_number' => $this->flight_number,
|
||||
'route_code' => $this->route_code,
|
||||
'route_leg' => $this->route_leg,
|
||||
'dpt_airport_id' => $this->dpt_airport_id,
|
||||
'arr_airport_id' => $this->arr_airport_id,
|
||||
'alt_airport_id' => $this->alt_airport_id,
|
||||
'route' => $this->route,
|
||||
'dpt_time' => $this->dpt_time,
|
||||
'arr_time' => $this->arr_time,
|
||||
'flight_time' => $this->flight_time,
|
||||
'notes' => $this->notes,
|
||||
'active' => $this->active,
|
||||
'created_at' => $this->created_at,
|
||||
'updated_at' => $this->updated_at,
|
||||
];
|
||||
}
|
||||
}
|
||||
@@ -1,25 +0,0 @@
|
||||
<?php
|
||||
|
||||
namespace App\Models\Transformers;
|
||||
|
||||
use App\Models\Airport;
|
||||
use League\Fractal\TransformerAbstract;
|
||||
|
||||
class AirportTransform extends TransformerAbstract
|
||||
{
|
||||
public function transform(Airport $ap)
|
||||
{
|
||||
return [
|
||||
'id' => $ap->id,
|
||||
'icao' => $ap->icao,
|
||||
'name' => $ap->name,
|
||||
'location' => $ap->location,
|
||||
'country' => $ap->country,
|
||||
'fuel_100ll_cost' => $ap->fuel_100ll_cost,
|
||||
'fuel_jeta_cost' => $ap->fuel_jeta_cost,
|
||||
'fuel_mogas_cost' => $ap->fuel_mogas_cost,
|
||||
'lat' => $ap->lat,
|
||||
'lon' => $ap->lon,
|
||||
];
|
||||
}
|
||||
}
|
||||
@@ -1,38 +0,0 @@
|
||||
<?php
|
||||
|
||||
namespace App\Models\Transformers;
|
||||
|
||||
use App\Models\Flight;
|
||||
use League\Fractal\TransformerAbstract;
|
||||
|
||||
|
||||
class FlightTransformer extends TransformerAbstract
|
||||
{
|
||||
public static $aptXform = null;
|
||||
|
||||
public function __construct()
|
||||
{
|
||||
FlightTransformer::$aptXform = new AirportTransform();
|
||||
}
|
||||
|
||||
public function transform(Flight $flight)
|
||||
{
|
||||
$ret = [
|
||||
'id' => $flight->id,
|
||||
'airline' => [
|
||||
'id' => $flight->airline->id,
|
||||
'code' => $flight->airline->code,
|
||||
'name' => $flight->airline->name,
|
||||
],
|
||||
'dpt' => FlightTransformer::$aptXform->transform($flight->dpt_airport),
|
||||
'arr' => FlightTransformer::$aptXform->transform($flight->arr_airport),
|
||||
'alt' => [],
|
||||
];
|
||||
|
||||
if($flight->alt_airport_id) {
|
||||
$flight['alt'] = FlightTransformer::$aptXform->transform($flight->alt_airport);
|
||||
}
|
||||
|
||||
return $ret;
|
||||
}
|
||||
}
|
||||
@@ -39,6 +39,10 @@ class FlightRepository extends BaseRepository implements CacheableInterface
|
||||
'active' => $only_active,
|
||||
];
|
||||
|
||||
if ($request->filled('flight_id')) {
|
||||
$where['id'] = $request->flight_id;
|
||||
}
|
||||
|
||||
if ($request->filled('airline_id')) {
|
||||
$where['airline_id'] = $request->airline_id;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user