Change /acars/logs data format; /cancel to DELETE request

This commit is contained in:
Nabeel Shahzad
2018-01-04 20:08:22 -06:00
parent b29a07afd3
commit 591c3e7b8b
5 changed files with 58 additions and 33 deletions

View File

@@ -57,12 +57,13 @@ class PirepController extends RestController
'level', 'level',
'route', 'route',
'notes', 'notes',
'created_at',
]; ];
protected $acarsRepo, protected $acarsRepo,
$geoSvc, $geoSvc,
$pirepRepo, $pirepRepo,
$pirepSvc; $pirepSvc;
/** /**
* PirepController constructor. * PirepController constructor.
@@ -245,8 +246,9 @@ class PirepController extends RestController
Log::info('Posting ACARS update', $request->toArray()); Log::info('Posting ACARS update', $request->toArray());
$this->validate($request, ['positions' => 'required']); $this->validate($request, ['positions' => 'required']);
$positions = $request->post()['positions']; $positions = $request->post('positions');
$count = 0;
foreach($positions as $position) foreach($positions as $position)
{ {
try { try {
@@ -258,6 +260,7 @@ class PirepController extends RestController
$update = Acars::create($attrs); $update = Acars::create($attrs);
$update->save(); $update->save();
++$count;
} catch (\Exception $e) { } catch (\Exception $e) {
Log::error($e); Log::error($e);
} }
@@ -267,7 +270,7 @@ class PirepController extends RestController
$pirep->status = PirepStatus::ENROUTE; $pirep->status = PirepStatus::ENROUTE;
$pirep->save(); $pirep->save();
return $this->acars_get($id, $request); return $this->message($count . ' positions added', $count);
} }
/** /**
@@ -275,7 +278,7 @@ class PirepController extends RestController
* But rather in a log file. * But rather in a log file.
* @param $id * @param $id
* @param Request $request * @param Request $request
* @return AcarsLogResource * @return \Illuminate\Http\JsonResponse
* @throws \Symfony\Component\HttpKernel\Exception\BadRequestHttpException * @throws \Symfony\Component\HttpKernel\Exception\BadRequestHttpException
*/ */
public function acars_log($id, Request $request) public function acars_log($id, Request $request)
@@ -289,18 +292,24 @@ class PirepController extends RestController
Log::info('Posting ACARS log', $request->toArray()); Log::info('Posting ACARS log', $request->toArray());
$attrs = $this->getFromReq($request, [ $this->validate($request, ['logs' => 'required']);
'log' => 'required', $logs = $request->post('logs');
'lat' => 'nullable',
'lon' => 'nullable',
'created_at' => 'nullable',
], ['pirep_id' => $id, 'type' => AcarsType::LOG]);
$acars = Acars::create($attrs); $count = 0;
$acars->save(); foreach($logs as $log) {
$attrs = $this->getFromReq($log, [
'log' => 'required',
'lat' => 'nullable',
'lon' => 'nullable',
'created_at' => 'nullable',
], ['pirep_id' => $id, 'type' => AcarsType::LOG]);
AcarsLogResource::withoutWrapping(); $acars = Acars::create($attrs);
return new AcarsLogResource($acars); $acars->save();
++$count;
}
return $this->message($count . ' logs added', $count);
} }
/** /**

View File

@@ -65,9 +65,14 @@ class RestController
* @return bool * @return bool
* @throws \Symfony\Component\HttpKernel\Exception\BadRequestHttpException * @throws \Symfony\Component\HttpKernel\Exception\BadRequestHttpException
*/ */
public function validate(Request $request, $rules) public function validate($request, $rules)
{ {
$validator = Validator::make($request->all(), $rules); if($request instanceof Request) {
$validator = Validator::make($request->all(), $rules);
} else {
$validator = Validator::make($request, $rules);
}
if (!$validator->passes()) { if (!$validator->passes()) {
throw new BadRequestHttpException($validator->errors(), null, 400); throw new BadRequestHttpException($validator->errors(), null, 400);
} }
@@ -80,10 +85,16 @@ class RestController
* @param $message * @param $message
* @return \Illuminate\Http\JsonResponse * @return \Illuminate\Http\JsonResponse
*/ */
public function message($message) public function message($message, $count=null)
{ {
return response()->json([ $attrs = [
'message' => $message 'message' => $message
]); ];
if($count !== null) {
$attrs['count'] = $count;
}
return response()->json($attrs);
} }
} }

View File

@@ -28,12 +28,17 @@ Route::group(['middleware' => ['api.auth']], function ()
Route::post('pireps/prefile', 'PirepController@prefile'); Route::post('pireps/prefile', 'PirepController@prefile');
Route::post('pireps/{id}/file', 'PirepController@file'); Route::post('pireps/{id}/file', 'PirepController@file');
Route::post('pireps/{id}/cancel', 'PirepController@cancel'); Route::delete('pireps/{id}/cancel', 'PirepController@cancel');
Route::get('pireps/{id}/acars/geojson', 'PirepController@acars_geojson'); Route::get('pireps/{id}/acars/geojson', 'PirepController@acars_geojson');
Route::get('pireps/{id}/acars/position', 'PirepController@acars_get'); Route::get('pireps/{id}/acars/position', 'PirepController@acars_get');
Route::post('pireps/{id}/acars/position', 'PirepController@acars_store'); 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/log', 'PirepController@acars_log');
Route::post('pireps/{id}/acars/logs', 'PirepController@acars_log');
Route::get('pireps/{id}/route', 'PirepController@route_get'); Route::get('pireps/{id}/route', 'PirepController@route_get');
Route::post('pireps/{id}/route', 'PirepController@route_post'); Route::post('pireps/{id}/route', 'PirepController@route_post');

View File

@@ -93,14 +93,10 @@ class AcarsTest extends TestCase
# Post an ACARS update # Post an ACARS update
$acars = factory(App\Models\Acars::class)->make()->toArray(); $acars = factory(App\Models\Acars::class)->make()->toArray();
unset($acars['id']); unset($acars['id']);
$update = ['positions' => [$acars]]; $update = ['positions' => [$acars]];
$response = $this->withHeaders($this->apiHeaders())->post($uri, $update); $response = $this->withHeaders($this->apiHeaders())->post($uri, $update);
$response->assertStatus(200); $response->assertStatus(200)->assertJson(['count' => 1]);
$body = $response->json();
$this->assertNotNull($body[0]['id']);
$this->assertEquals($pirep_id, $body[0]['pirep_id']);
//$this->assertHasKeys($body, $this->fillableFields(new \App\Models\Acars));
# Make sure PIREP state moved into ENROUTE # Make sure PIREP state moved into ENROUTE
$pirep = $this->getPirep($pirep_id); $pirep = $this->getPirep($pirep_id);
@@ -140,7 +136,7 @@ class AcarsTest extends TestCase
$update = ['positions' => $acars]; $update = ['positions' => $acars];
$response = $this->withHeaders($this->apiHeaders())->post($uri, $update); $response = $this->withHeaders($this->apiHeaders())->post($uri, $update);
$response->assertStatus(200)->assertJsonCount($acars_count); $response->assertStatus(200)->assertJson(['count' => $acars_count]);
$response = $this->withHeaders($this->apiHeaders())->get($uri); $response = $this->withHeaders($this->apiHeaders())->get($uri);
$response->assertStatus(200)->assertJsonCount($acars_count); $response->assertStatus(200)->assertJsonCount($acars_count);
@@ -224,12 +220,17 @@ class AcarsTest extends TestCase
$acars = factory(App\Models\Acars::class)->make(); $acars = factory(App\Models\Acars::class)->make();
$post_log = [ $post_log = [
'log' => $acars->log 'logs' => [
['log' => $acars->log]
]
]; ];
$uri = '/api/pireps/' . $pirep_id . '/acars/log'; $uri = '/api/pireps/' . $pirep_id . '/acars/log';
$response = $this->withHeaders($this->apiHeaders())->post($uri, $post_log); $response = $this->withHeaders($this->apiHeaders())->post($uri, $post_log);
$response->assertStatus(201); $response->assertStatus(200);
$body = $response->json();
$this->assertEquals(1, $body['count']);
} }
/** /**
@@ -302,7 +303,6 @@ class AcarsTest extends TestCase
])->toArray(); ])->toArray();
$response = $this->withHeaders($this->apiHeaders())->post($uri, $pirep); $response = $this->withHeaders($this->apiHeaders())->post($uri, $pirep);
#$response = $this->withHeaders($this->headers($user->api_key))->post($uri, $pirep);
$response->assertStatus(201); $response->assertStatus(201);
$pirep = $response->json(); $pirep = $response->json();

View File

@@ -204,7 +204,7 @@ class PIREPTest extends TestCase
# Cancel it # Cancel it
$uri = '/api/pireps/' . $pirep_id . '/cancel'; $uri = '/api/pireps/' . $pirep_id . '/cancel';
$response = $this->withHeaders($this->apiHeaders())->post($uri, $acars); $response = $this->withHeaders($this->apiHeaders())->delete($uri, $acars);
$response->assertStatus(200); $response->assertStatus(200);
# Should get a 400 when posting an ACARS update # Should get a 400 when posting an ACARS update