diff --git a/app/Http/Controllers/Api/PirepController.php b/app/Http/Controllers/Api/PirepController.php index 14f177475..1466da6b6 100644 --- a/app/Http/Controllers/Api/PirepController.php +++ b/app/Http/Controllers/Api/PirepController.php @@ -168,8 +168,18 @@ protected function updateFares($pirep, Request $request) */ public function get($id) { + $with = [ + 'acars', + 'arr_airport', + 'dpt_airport', + 'comments', + 'flight', + 'simbrief', + 'user' + ]; + $pirep = $this->pirepRepo - ->with(['acars', 'arr_airport', 'dpt_airport', 'comments', 'flight', 'simbrief', 'user']) + ->with($with) ->find($id); return new PirepResource($pirep); diff --git a/app/Http/Resources/Pirep.php b/app/Http/Resources/Pirep.php index 5c3afd8ec..502aa071e 100644 --- a/app/Http/Resources/Pirep.php +++ b/app/Http/Resources/Pirep.php @@ -68,7 +68,7 @@ public function toArray($request) $res['arr_airport'] = new Airport($this->arr_airport); $res['position'] = Acars::make($this->whenLoaded('position')); - $res['comments'] = PirepComment::make($this->whenLoaded('comments')); + $res['comments'] = PirepComment::collection($this->whenLoaded('comments')); $res['user'] = User::make($this->whenLoaded('user')); $res['flight'] = Flight::make($this->whenLoaded('flight')); diff --git a/app/Http/Resources/PirepComment.php b/app/Http/Resources/PirepComment.php index c59daca29..2a3407f72 100644 --- a/app/Http/Resources/PirepComment.php +++ b/app/Http/Resources/PirepComment.php @@ -4,6 +4,9 @@ use App\Contracts\Resource; +/** + * @mixin \App\Models\PirepComment + */ class PirepComment extends Resource { /** @@ -15,6 +18,10 @@ class PirepComment extends Resource */ public function toArray($request) { + if (!$this->user) { + return []; + } + $user = $this->user; return [ diff --git a/app/Models/PirepComment.php b/app/Models/PirepComment.php index 5bfbf3a37..f7c0bd5a6 100644 --- a/app/Models/PirepComment.php +++ b/app/Models/PirepComment.php @@ -5,8 +5,10 @@ use App\Contracts\Model; /** - * @property string pirep_id - * @property int user_id + * @property string $pirep_id + * @property int $user_id + * @property Pirep $pirep + * @property User $user */ class PirepComment extends Model { diff --git a/app/Repositories/AcarsRepository.php b/app/Repositories/AcarsRepository.php index 7b4df0e87..021dca2c7 100644 --- a/app/Repositories/AcarsRepository.php +++ b/app/Repositories/AcarsRepository.php @@ -56,7 +56,16 @@ public function forPirep($pirep_id, $type) */ public function getPositions($live_time = 0) { - $q = Pirep::with(['aircraft', 'airline', 'arr_airport', 'dpt_airport', 'position', 'user']) + $with = [ + 'aircraft', + 'airline', + 'arr_airport', + 'dpt_airport', + 'position', + 'user' + ]; + + $q = Pirep::with($with) ->where(['state' => PirepState::IN_PROGRESS]); if ($live_time !== null && $live_time > 0) { diff --git a/tests/AcarsTest.php b/tests/AcarsTest.php index 0938df1f7..8dee7278b 100644 --- a/tests/AcarsTest.php +++ b/tests/AcarsTest.php @@ -3,6 +3,7 @@ use App\Models\Enums\PirepState; use App\Models\Enums\PirepStatus; use App\Models\PirepFare; +use App\Models\PirepFieldValue; use App\Repositories\SettingRepository; use App\Support\Utils; @@ -247,7 +248,7 @@ public function testPrefileAndUpdates() ]; $response = $this->post($uri, $pirep); - $response->assertStatus(201); + $response->assertStatus(200); $pirep = $response->json('data'); // See that the fields and fares were set @@ -259,7 +260,7 @@ public function testPrefileAndUpdates() $this->assertEquals($fare->capacity, $saved_fare['count']); // Check saved fields - $saved_fields = \App\Models\PirepFieldValue::where('pirep_id', $pirep['id'])->get(); + $saved_fields = PirepFieldValue::where('pirep_id', $pirep['id'])->get(); $this->assertCount(1, $saved_fields); $field = $saved_fields->first(); @@ -334,7 +335,7 @@ public function testPrefileAndInvalidUpdates() ]; $response = $this->post($uri, $pirep); - $response->assertStatus(201); + $response->assertStatus(200); $pirep = $response->json('data'); /** @@ -388,13 +389,13 @@ public function testAcarsUpdates() ]; $response = $this->post($uri, $pirep_create); - $response->assertStatus(201); + $response->assertStatus(200); // Get the PIREP ID $body = $response->json(); $pirep_id = $body['data']['id']; - $this->assertHasKeys($body['data'], ['airline', 'arr_airport', 'dpt_airport', 'position']); + $this->assertHasKeys($body['data'], ['airline', 'arr_airport', 'dpt_airport']); $this->assertNotNull($pirep_id); $this->assertEquals($body['data']['user_id'], $this->user->id); @@ -550,7 +551,7 @@ public function testFilePirepApi(): void ]; $response = $this->post($uri, $pirep); - $response->assertStatus(201); + $response->assertStatus(200); // Get the PIREP ID $body = $response->json(); @@ -616,7 +617,7 @@ public function testAircraftAllowed() // Try refiling with a valid aircraft $pirep['aircraft_id'] = $subfleetA['aircraft']->random()->id; $response = $this->post($uri, $pirep); - $response->assertStatus(201); + $response->assertStatus(200); } /** @@ -657,7 +658,7 @@ public function testIgnoreAircraftAllowed() ]; $response = $this->post($uri, $pirep); - $response->assertStatus(201); + $response->assertStatus(200); } /** @@ -671,7 +672,7 @@ public function testMultipleAcarsPositionUpdates() $uri = '/api/pireps/prefile'; $response = $this->post($uri, $pirep); - $response->assertStatus(201); + $response->assertStatus(200); $pirep_id = $response->json()['data']['id']; @@ -869,7 +870,7 @@ public function testDuplicatePirep() $uri = '/api/pireps/prefile'; $response = $this->post($uri, $pirep); - $response->assertStatus(201); + $response->assertStatus(200); $pirep_id = $response->json()['data']['id']; // try readding