Allow the fares to be submitted via API for ACARS #125

This commit is contained in:
Nabeel Shahzad
2018-03-14 10:34:41 -05:00
parent 7148f27d33
commit afd7aebe20
5 changed files with 213 additions and 56 deletions

View File

@@ -26,6 +26,7 @@ use App\Models\PirepComment;
use App\Repositories\AcarsRepository;
use App\Repositories\JournalRepository;
use App\Repositories\PirepRepository;
use App\Services\FareService;
use App\Services\Finance\PirepFinanceService;
use App\Services\GeoService;
use App\Services\PirepService;
@@ -37,6 +38,7 @@ use Log;
class PirepController extends RestController
{
private $acarsRepo,
$fareSvc,
$financeSvc,
$geoSvc,
$journalRepo,
@@ -56,6 +58,7 @@ class PirepController extends RestController
*/
public function __construct(
AcarsRepository $acarsRepo,
FareService $fareSvc,
PirepFinanceService $financeSvc,
GeoService $geoSvc,
JournalRepository $journalRepo,
@@ -64,6 +67,7 @@ class PirepController extends RestController
UserService $userSvc
) {
$this->acarsRepo = $acarsRepo;
$this->fareSvc = $fareSvc;
$this->financeSvc = $financeSvc;
$this->geoSvc = $geoSvc;
$this->journalRepo = $journalRepo;
@@ -115,6 +119,29 @@ class PirepController extends RestController
$this->pirepSvc->updateCustomFields($pirep->id, $pirep_fields);
}
/**
* Save the fares
* @param $pirep
* @param Request $request
* @throws \Exception
*/
protected function updateFares($pirep, Request $request)
{
if(!$request->filled('fares')) {
return;
}
$fares = [];
foreach($request->post('fares') as $fare) {
$fares[] = [
'fare_id' => $fare['id'],
'count' => $fare['count'],
];
}
$this->fareSvc->saveForPirep($pirep, $fares);
}
/**
* Create a new PIREP and place it in a "inprogress" and "prefile" state
* Once ACARS updates are being processed, then it can go into an 'ENROUTE'
@@ -124,6 +151,7 @@ class PirepController extends RestController
* @return PirepResource
* @throws \App\Exceptions\PirepCancelled
* @throws \App\Exceptions\AircraftPermissionDenied
* @throws \Exception
*/
public function prefile(PrefileRequest $request)
{
@@ -160,6 +188,7 @@ class PirepController extends RestController
Log::info($pirep->id);
$this->updateFields($pirep, $request);
$this->updateFares($pirep, $request);
return new PirepResource($pirep);
}
@@ -175,6 +204,7 @@ class PirepController extends RestController
* @throws \App\Exceptions\PirepCancelled
* @throws \App\Exceptions\AircraftPermissionDenied
* @throws \Prettus\Validator\Exceptions\ValidatorException
* @throws \Exception
*/
public function update($id, UpdateRequest $request)
{
@@ -199,6 +229,7 @@ class PirepController extends RestController
$pirep = $this->pirepRepo->update($attrs, $id);
$this->updateFields($pirep, $request);
$this->updateFares($pirep, $request);
return new PirepResource($pirep);
}
@@ -242,6 +273,7 @@ class PirepController extends RestController
$pirep = $this->pirepRepo->update($attrs, $id);
$pirep = $this->pirepSvc->create($pirep);
$this->updateFields($pirep, $request);
$this->updateFares($pirep, $request);
} catch (\Exception $e) {
Log::error($e);
}

View File

@@ -43,6 +43,11 @@ class FileRequest extends FormRequest
'landing_rate' => 'nullable|numeric',
'flight_type' => 'nullable|integer',
'created_at' => 'nullable|date',
# See if the fare objects are included and formatted properly
'fares' => 'nullable|array',
'fares.*.id' => 'required',
'fares.*.count' => 'required|numeric',
];
return $rules;

View File

@@ -38,6 +38,11 @@ class PrefileRequest extends FormRequest
'notes' => 'nullable',
'flight_type' => 'nullable|integer',
'created_at' => 'nullable|date',
# See if the fare objects are included and formatted properly
'fares' => 'nullable|array',
'fares.*.id' => 'required',
'fares.*.count' => 'required|numeric',
];
return $rules;

View File

@@ -42,6 +42,11 @@ class UpdateRequest extends FormRequest
'landing_rate' => 'nullable|numeric',
'flight_type' => 'nullable|integer',
'created_at' => 'nullable|date',
# See if the fare objects are included and formatted properly
'fares' => 'nullable|array',
'fares.*.id' => 'required',
'fares.*.count' => 'required|numeric',
];
return $rules;