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

View File

@@ -65,9 +65,14 @@ class RestController
* @return bool
* @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()) {
throw new BadRequestHttpException($validator->errors(), null, 400);
}
@@ -80,10 +85,16 @@ class RestController
* @param $message
* @return \Illuminate\Http\JsonResponse
*/
public function message($message)
public function message($message, $count=null)
{
return response()->json([
$attrs = [
'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/{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/position', 'PirepController@acars_get');
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/logs', 'PirepController@acars_log');
Route::get('pireps/{id}/route', 'PirepController@route_get');
Route::post('pireps/{id}/route', 'PirepController@route_post');

View File

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

View File

@@ -204,7 +204,7 @@ class PIREPTest extends TestCase
# Cancel it
$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);
# Should get a 400 when posting an ACARS update