From 8810f03c2944226dd32957aacbea549e85d0a590 Mon Sep 17 00:00:00 2001 From: Nabeel Shahzad Date: Wed, 3 Jan 2018 22:16:18 -0600 Subject: [PATCH] Add separate ACARS route to post log messages to the ACARS table --- app/Http/Controllers/Api/PirepController.php | 34 ++++++++++++++++++++ app/Routes/api.php | 4 ++- 2 files changed, 37 insertions(+), 1 deletion(-) diff --git a/app/Http/Controllers/Api/PirepController.php b/app/Http/Controllers/Api/PirepController.php index 7c6edd49..60885e0c 100644 --- a/app/Http/Controllers/Api/PirepController.php +++ b/app/Http/Controllers/Api/PirepController.php @@ -229,4 +229,38 @@ class PirepController extends AppBaseController AcarsResource::withoutWrapping(); return new AcarsResource($update); } + + /** + * Post ACARS LOG update for a PIREP. These updates won't show up on the map + * But rather in a log file. + * @param $id + * @param Request $request + * @return AcarsResource + * @throws \Symfony\Component\HttpKernel\Exception\BadRequestHttpException + */ + public function acars_log($id, Request $request) + { + $pirep = $this->pirepRepo->find($id); + + # Check if the status is cancelled... + if ($pirep->state === PirepState::CANCELLED) { + throw new BadRequestHttpException('PIREP has been cancelled, updates can\'t be posted'); + } + + Log::info('Posting ACARS update', $request->toArray()); + $attrs = $request->toArray(); + + $attrs['pirep_id'] = $id; + $attrs['type'] = AcarsType::LOG; + + $update = Acars::create($attrs); + $update->save(); + + # Change the PIREP status + $pirep->status = PirepStatus::ENROUTE; + $pirep->save(); + + AcarsResource::withoutWrapping(); + return new AcarsResource($update); + } } diff --git a/app/Routes/api.php b/app/Routes/api.php index fdb41621..135b677b 100755 --- a/app/Routes/api.php +++ b/app/Routes/api.php @@ -25,11 +25,13 @@ Route::group([], function() Route::group(['middleware' => ['api.auth']], function () { Route::get('pireps/{id}', 'PirepController@get'); + Route::post('pireps/prefile', 'PirepController@prefile'); Route::post('pireps/{id}/file', 'PirepController@file'); Route::post('pireps/{id}/cancel', 'PirepController@cancel'); - Route::post('pireps/{id}/acars', 'PirepController@acars_store'); + Route::post('pireps/{id}/acars/position', 'PirepController@acars_store'); + Route::post('pireps/{id}/acars/log', 'PirepController@acars_log'); # This is the info of the user whose token is in use Route::get('user', 'UserController@index');