From 33daaf4a35ae4d8a5d2a58d4ed50dcd16d3ba2e2 Mon Sep 17 00:00:00 2001 From: Nabeel Shahzad Date: Fri, 23 Mar 2018 17:29:54 -0500 Subject: [PATCH 1/9] Add an InternalError type that piggybacks ValidationError --- app/Exceptions/InternalError.php | 32 +++++++++++++++++++ app/Services/ImportService.php | 53 ++++++++------------------------ 2 files changed, 44 insertions(+), 41 deletions(-) create mode 100644 app/Exceptions/InternalError.php diff --git a/app/Exceptions/InternalError.php b/app/Exceptions/InternalError.php new file mode 100644 index 00000000..0d26e519 --- /dev/null +++ b/app/Exceptions/InternalError.php @@ -0,0 +1,32 @@ +errors()->add($field ?? static::FLASH_FIELD_NAME, $message); + + parent::__construct($validator); + } +} diff --git a/app/Services/ImportService.php b/app/Services/ImportService.php index aaba1139..1f32fc09 100644 --- a/app/Services/ImportService.php +++ b/app/Services/ImportService.php @@ -36,6 +36,8 @@ class ImportService extends Service } /** + * Throw a validation error back up because it will automatically show + * itself under the CSV file upload, and nothing special needs to be done * @param $error * @param $e * @throws ValidationException @@ -72,13 +74,15 @@ class ImportService extends Service /** * Run the actual importer, pass in one of the Import classes which implements * the ImportExport interface - * @param Reader $reader + * @param $file_path * @param ImportExport $importer * @return array * @throws ValidationException */ - protected function runImport(Reader $reader, ImportExport $importer): array + protected function runImport($file_path, ImportExport $importer): array { + $reader = $this->openCsv($file_path); + $cols = $importer->getColumns(); $first_header = $cols[0]; @@ -126,13 +130,8 @@ class ImportService extends Service # TODO: delete airports } - $reader = $this->openCsv($csv_file); - if (!$reader) { - return false; - } - $importer = new AircraftImporter(); - return $this->runImport($reader, $importer); + return $this->runImport($csv_file, $importer); } /** @@ -148,13 +147,8 @@ class ImportService extends Service Airport::truncate(); } - $reader = $this->openCsv($csv_file); - if (!$reader) { - return false; - } - $importer = new AirportImporter(); - return $this->runImport($reader, $importer); + return $this->runImport($csv_file, $importer); } /** @@ -170,13 +164,8 @@ class ImportService extends Service Expense::truncate(); } - $reader = $this->openCsv($csv_file); - if (!$reader) { - return false; - } - $importer = new ExpenseImporter(); - return $this->runImport($reader, $importer); + return $this->runImport($csv_file, $importer); } /** @@ -192,14 +181,8 @@ class ImportService extends Service # TODO: Delete all from: fares } - $reader = $this->openCsv($csv_file); - if (!$reader) { - # TODO: Throw an error - return false; - } - $importer = new FareImporter(); - return $this->runImport($reader, $importer); + return $this->runImport($csv_file, $importer); } /** @@ -215,14 +198,8 @@ class ImportService extends Service # TODO: Delete all from: flights, flight_field_values } - $reader = $this->openCsv($csv_file); - if (!$reader) { - # TODO: Throw an error - return false; - } - $importer = new FlightImporter(); - return $this->runImport($reader, $importer); + return $this->runImport($csv_file, $importer); } /** @@ -238,13 +215,7 @@ class ImportService extends Service # TODO: Cleanup subfleet data } - $reader = $this->openCsv($csv_file); - if (!$reader) { - # TODO: Throw an error - return false; - } - $importer = new SubfleetImporter(); - return $this->runImport($reader, $importer); + return $this->runImport($csv_file, $importer); } } From 1eb7e5d59a515f37e054817c5285d3188c25eb4c Mon Sep 17 00:00:00 2001 From: Nabeel Shahzad Date: Fri, 23 Mar 2018 20:29:37 -0500 Subject: [PATCH 2/9] Fix issue with flight fields not adding correctly --- app/Http/Controllers/Admin/FlightController.php | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/app/Http/Controllers/Admin/FlightController.php b/app/Http/Controllers/Admin/FlightController.php index ab1a8fbc..48f7e405 100644 --- a/app/Http/Controllers/Admin/FlightController.php +++ b/app/Http/Controllers/Admin/FlightController.php @@ -398,21 +398,25 @@ class FlightController extends Controller if ($request->isMethod('post')) { Log::info('Adding new flight field, flight: '.$flight_id, $request->input()); - $field = new FlightFieldValue; + $field = new FlightFieldValue(); $field->flight_id = $flight_id; $field->name = $request->input('name'); $field->value = $request->input('value'); $field->save(); } elseif ($request->isMethod('put')) { Log::info('Updating flight field, flight: '.$flight_id, $request->input()); - $field = FlightFieldValue::where('name', $request->input('name'))->first(); + $field = FlightFieldValue::where([ + 'name' => $request->input('name'), + 'flight_id' => $flight_id, + ])->first(); + if(!$field) { Log::info('Field not found, creating new'); $field = new FlightFieldValue(); - $field->flight_id = $flight_id; $field->name = $request->input('name'); } + $field->flight_id = $flight_id; $field->value = $request->input('value'); $field->save(); // update the field value From 06717427031de14e6d0c20ea2bf796c51f3a6981 Mon Sep 17 00:00:00 2001 From: Nabeel Shahzad Date: Fri, 23 Mar 2018 20:30:31 -0500 Subject: [PATCH 3/9] Load subfleet page first, can add aircraft from there #217 --- .../Controllers/Admin/AircraftController.php | 22 ++++++++++++++----- .../views/admin/aircraft/fields.blade.php | 6 ++++- .../views/admin/aircraft/index.blade.php | 5 +++-- resources/views/admin/menu.blade.php | 6 ++--- .../views/admin/subfleets/fields.blade.php | 21 ++++++++++++++---- .../views/admin/subfleets/index.blade.php | 2 +- .../views/admin/subfleets/table.blade.php | 5 +++-- 7 files changed, 49 insertions(+), 18 deletions(-) diff --git a/app/Http/Controllers/Admin/AircraftController.php b/app/Http/Controllers/Admin/AircraftController.php index c8f8a898..509312b7 100644 --- a/app/Http/Controllers/Admin/AircraftController.php +++ b/app/Http/Controllers/Admin/AircraftController.php @@ -43,26 +43,38 @@ class AircraftController extends Controller /** * Display a listing of the Aircraft. - * @throws \Prettus\Repository\Exceptions\RepositoryException + * @param Request $request + * @return \Illuminate\Contracts\View\Factory|\Illuminate\View\View */ public function index(Request $request) { - $this->aircraftRepo->pushCriteria(new RequestCriteria($request)); - $aircraft = $this->aircraftRepo->orderBy('registration', 'asc')->all(); + // If subfleet ID is passed part of the query string, then only + // show the aircraft that are in that subfleet + $w = []; + if($request->filled('subfleet')) { + $w['subfleet_id'] = $request->input('subfleet'); + } + + $aircraft = $this->aircraftRepo->whereOrder($w, 'registration', 'asc'); + $aircraft = $aircraft->all(); return view('admin.aircraft.index', [ - 'aircraft' => $aircraft + 'aircraft' => $aircraft, + 'subfleet_id' => $request->input('subfleet'), ]); } /** * Show the form for creating a new Aircraft. + * @param Request $request + * @return \Illuminate\Contracts\View\Factory|\Illuminate\View\View */ - public function create() + public function create(Request $request) { return view('admin.aircraft.create', [ 'subfleets' => Subfleet::all()->pluck('name', 'id'), 'statuses' => AircraftStatus::select(true), + 'subfleet_id' => $request->query('subfleet') ]); } diff --git a/resources/views/admin/aircraft/fields.blade.php b/resources/views/admin/aircraft/fields.blade.php index 28e33c05..639f18b0 100644 --- a/resources/views/admin/aircraft/fields.blade.php +++ b/resources/views/admin/aircraft/fields.blade.php @@ -1,7 +1,11 @@
{{ Form::label('subfleet_id', 'Subfleet:') }} - {{ Form::select('subfleet_id', $subfleets, null, ['class' => 'form-control select2', 'placeholder' => 'Select Subfleet']) }} + {{ Form::select('subfleet_id', $subfleets, $subfleet_id ?? null, [ + 'class' => 'form-control select2', + 'placeholder' => 'Select Subfleet' + ]) + }}

{{ $errors->first('subfleet_id') }}

diff --git a/resources/views/admin/aircraft/index.blade.php b/resources/views/admin/aircraft/index.blade.php index 7b99af5e..25666c0c 100644 --- a/resources/views/admin/aircraft/index.blade.php +++ b/resources/views/admin/aircraft/index.blade.php @@ -4,8 +4,9 @@ @section('actions')
  • Export to CSV
  • Import from CSV
  • -
  • Subfleets
  • -
  • New Aircraft
  • + {{--
  • Subfleets
  • --}} +
  • + New Aircraft
  • @endsection @section('content') diff --git a/resources/views/admin/menu.blade.php b/resources/views/admin/menu.blade.php index 848c4464..f38c192c 100644 --- a/resources/views/admin/menu.blade.php +++ b/resources/views/admin/menu.blade.php @@ -16,7 +16,7 @@
  • flights
  • -
  • fleet
  • +
  • fleet
  • fares
  • finances
  • @@ -31,9 +31,9 @@