Make sure user and acars data is sent from API

This commit is contained in:
Nabeel Shahzad
2020-03-29 13:33:14 -04:00
parent 82b873c071
commit e9b30fbe30
8 changed files with 46 additions and 24 deletions
+7 -3
View File
@@ -162,13 +162,17 @@ class PirepController extends Controller
} }
/** /**
* @param $pirep_id * @param string $id The PIREP ID
* *
* @return PirepResource * @return PirepResource
*/ */
public function get($pirep_id) public function get($id)
{ {
return new PirepResource($this->pirepRepo->find($pirep_id)); $pirep = $this->pirepRepo
->with(['acars', 'arr_airport', 'dpt_airport', 'comments', 'flight', 'simbrief', 'user'])
->find($id);
return new PirepResource($pirep);
} }
/** /**
+1 -1
View File
@@ -90,7 +90,7 @@ class UserController extends Controller
public function get($id) public function get($id)
{ {
$user = $this->userRepo $user = $this->userRepo
->with(['airline', 'rank']) ->with(['airline', 'bids', 'rank'])
->find($id); ->find($id);
return new UserResource($user); return new UserResource($user);
+4 -2
View File
@@ -27,6 +27,7 @@ class Pirep extends Resource
{ {
$res = parent::toArray($request); $res = parent::toArray($request);
$res['ident'] = $this->ident; $res['ident'] = $this->ident;
$res['status_text'] = PirepStatus::label($this->status);
// Set these to the response units // Set these to the response units
if (!array_key_exists('distance', $res)) { if (!array_key_exists('distance', $res)) {
@@ -62,8 +63,6 @@ class Pirep extends Resource
$res['block_off_time'] = $this->block_off_time->toIso8601ZuluString(); $res['block_off_time'] = $this->block_off_time->toIso8601ZuluString();
} }
$res['status_text'] = PirepStatus::label($this->status);
$res['airline'] = new Airline($this->airline); $res['airline'] = new Airline($this->airline);
$res['dpt_airport'] = new Airport($this->dpt_airport); $res['dpt_airport'] = new Airport($this->dpt_airport);
$res['arr_airport'] = new Airport($this->arr_airport); $res['arr_airport'] = new Airport($this->arr_airport);
@@ -73,10 +72,13 @@ class Pirep extends Resource
$res['user'] = [ $res['user'] = [
'id' => $this->user->id, 'id' => $this->user->id,
'name' => $this->user->name, 'name' => $this->user->name,
'avatar' => $this->user->resolveAvatarUrl(),
'home_airport_id' => $this->user->home_airport_id, 'home_airport_id' => $this->user->home_airport_id,
'curr_airport_id' => $this->user->curr_airport_id, 'curr_airport_id' => $this->user->curr_airport_id,
]; ];
$res['flight'] = Flight::make($this->whenLoaded('flight'));
// format to kvp // format to kvp
$res['fields'] = new PirepFieldCollection($this->fields); $res['fields'] = new PirepFieldCollection($this->fields);
+3 -12
View File
@@ -17,6 +17,7 @@ class User extends Resource
'ident' => $this->ident, 'ident' => $this->ident,
'name' => $this->name, 'name' => $this->name,
'email' => $this->email, 'email' => $this->email,
'avatar' => $this->resolveAvatarUrl(),
'rank_id' => $this->rank_id, 'rank_id' => $this->rank_id,
'home_airport' => $this->home_airport_id, 'home_airport' => $this->home_airport_id,
'curr_airport' => $this->curr_airport_id, 'curr_airport' => $this->curr_airport_id,
@@ -27,19 +28,9 @@ class User extends Resource
'state' => $this->state, 'state' => $this->state,
]; ];
$res['airline'] = Airline::make($this->airline); $res['airline'] = Airline::make($this->whenLoaded('airline'));
$res['bids'] = UserBid::collection($this->whenLoaded('bids')); $res['bids'] = UserBid::collection($this->whenLoaded('bids'));
$res['rank'] = Rank::make($this->rank); $res['rank'] = Rank::make($this->whenLoaded('rank'));
/*
* Determine which avatar to send/use
*/
$res['avatar'] = $this->avatar;
if (empty($res['avatar'])) {
$res['avatar'] = $this->gravatar();
} else {
$res['avatar'] = $res['avatar']->url;
}
return $res; return $res;
} }
+1
View File
@@ -14,6 +14,7 @@ use Illuminate\Support\Collection;
/** /**
* @property string id * @property string id
* @property string ident
* @property string flight_number * @property string flight_number
* @property string route_code * @property string route_code
* @property string route_leg * @property string route_leg
+10
View File
@@ -170,6 +170,16 @@ class User extends Authenticatable
return $uri; return $uri;
} }
public function resolveAvatarUrl()
{
$avatar = $this->getAvatarAttribute();
if (empty($avatar)) {
return $this->gravatar();
} else {
return $avatar->url;
}
}
/** /**
* Foreign Keys * Foreign Keys
*/ */
+1 -4
View File
@@ -9,9 +9,6 @@ use App\Models\Enums\PirepState;
use App\Models\Pirep; use App\Models\Pirep;
use Carbon\Carbon; use Carbon\Carbon;
/**
* Class AcarsRepository
*/
class AcarsRepository extends Repository class AcarsRepository extends Repository
{ {
/** /**
@@ -59,7 +56,7 @@ class AcarsRepository extends Repository
*/ */
public function getPositions($live_time = 0) public function getPositions($live_time = 0)
{ {
$q = Pirep::with(['airline', 'position', 'aircraft']) $q = Pirep::with(['aircraft', 'airline', 'arr_airport', 'dpt_airport', 'position', 'user'])
->where(['state' => PirepState::IN_PROGRESS]); ->where(['state' => PirepState::IN_PROGRESS]);
if ($live_time !== null && $live_time > 0) { if ($live_time !== null && $live_time > 0) {
+19 -2
View File
@@ -416,7 +416,8 @@ class AcarsTest extends TestCase
*/ */
$uri = '/api/pireps/'.$pirep_id.'/update'; $uri = '/api/pireps/'.$pirep_id.'/update';
$this->post($uri, [ $this->post($uri, [
'fields' => [ 'flight_time' => 60,
'fields' => [
'custom_field' => 'custom_value_changed', 'custom_field' => 'custom_value_changed',
], ],
]); ]);
@@ -476,7 +477,23 @@ class AcarsTest extends TestCase
$body = $response->json('data'); $body = $response->json('data');
$this->assertEquals('G26', $body['Departure Gate']); $this->assertEquals('G26', $body['Departure Gate']);
// File the PIREP now /*
* Get the live flights and make sure all the fields we want are there
*/
$uri = '/api/acars';
$response = $this->get($uri);
$response->assertStatus(200);
$body = $response->json('data');
$this->assertEquals($pirep->id, $body['id']);
$this->assertNotEmpty($body['user']['name']);
$this->assertNotEmpty($body['user']['avatar']);
/*
* File the PIREP
*/
$uri = '/api/pireps/'.$pirep_id.'/file'; $uri = '/api/pireps/'.$pirep_id.'/file';
$response = $this->post($uri, []); $response = $this->post($uri, []);
$response->assertStatus(400); // missing field $response->assertStatus(400); // missing field