From 37cdde845d837c78b54751b43f6535cf01259cca Mon Sep 17 00:00:00 2001 From: Nabeel Shahzad Date: Tue, 2 Jan 2018 09:40:42 -0600 Subject: [PATCH] Add order column to ACARS table for the order of the route points --- .../migrations/2017_12_20_005147_create_acars_tables.php | 1 + app/Models/Acars.php | 2 ++ app/Repositories/AcarsRepository.php | 8 +++++++- app/Services/PIREPService.php | 9 ++++++--- tests/PIREPTest.php | 4 +++- 5 files changed, 19 insertions(+), 5 deletions(-) diff --git a/app/Database/migrations/2017_12_20_005147_create_acars_tables.php b/app/Database/migrations/2017_12_20_005147_create_acars_tables.php index 608ccd40..684297ce 100644 --- a/app/Database/migrations/2017_12_20_005147_create_acars_tables.php +++ b/app/Database/migrations/2017_12_20_005147_create_acars_tables.php @@ -18,6 +18,7 @@ class CreateAcarsTables extends Migration $table->string('pirep_id', 12); $table->unsignedTinyInteger('type'); $table->unsignedInteger('nav_type')->nullable(); + $table->unsignedInteger('order')->default(0); $table->string('name')->nullable(); $table->string('log')->nullable(); $table->float('lat', 7, 4)->default(0.0); diff --git a/app/Models/Acars.php b/app/Models/Acars.php index 4196b7e2..538567fc 100644 --- a/app/Models/Acars.php +++ b/app/Models/Acars.php @@ -15,6 +15,7 @@ class Acars extends BaseModel 'pirep_id', 'type', 'nav_type', + 'order', 'name', 'log', 'lat', @@ -31,6 +32,7 @@ class Acars extends BaseModel public $casts = [ 'type' => 'integer', + 'order' => 'integer', 'nav_type' => 'integer', 'lat' => 'float', 'lon' => 'float', diff --git a/app/Repositories/AcarsRepository.php b/app/Repositories/AcarsRepository.php index ab052a5d..13f26bf7 100644 --- a/app/Repositories/AcarsRepository.php +++ b/app/Repositories/AcarsRepository.php @@ -3,6 +3,7 @@ namespace App\Repositories; use App\Models\Acars; +use App\Models\Enums\AcarsType; use App\Models\Pirep; use App\Models\Enums\PirepState; @@ -27,7 +28,12 @@ class AcarsRepository extends BaseRepository //implements CacheableInterface 'type' => $type, ]; - return $this->orderBy('created_at', 'asc')->findWhere($where); + $order_by = 'created_at'; + if($type === AcarsType::ROUTE) { + $order_by = 'order'; + } + + return $this->orderBy('order', 'asc')->findWhere($where); } /** diff --git a/app/Services/PIREPService.php b/app/Services/PIREPService.php index c57a2b3f..500cb4a6 100644 --- a/app/Services/PIREPService.php +++ b/app/Services/PIREPService.php @@ -62,9 +62,9 @@ class PIREPService extends BaseService { # Delete all the existing nav points Acars::where([ - 'pirep_id' => $pirep->id, - 'type' => AcarsType::ROUTE, - ])->delete(); + 'pirep_id' => $pirep->id, + 'type' => AcarsType::ROUTE, + ])->delete(); # Delete the route if (empty($pirep->route)) { @@ -81,16 +81,19 @@ class PIREPService extends BaseService /** * @var $point Navdata */ + $point_count = 1; foreach ($route as $point) { $acars = new Acars(); $acars->pirep_id = $pirep->id; $acars->type = AcarsType::ROUTE; $acars->nav_type = $point->type; + $acars->order = $point_count; $acars->name = $point->id; $acars->lat = $point->lat; $acars->lon = $point->lon; $acars->save(); + ++$point_count; } return $pirep; diff --git a/tests/PIREPTest.php b/tests/PIREPTest.php index 574b977e..4a9b6137 100644 --- a/tests/PIREPTest.php +++ b/tests/PIREPTest.php @@ -36,10 +36,12 @@ class PIREPTest extends TestCase protected function getAcarsRoute($pirep) { + $pirep->refresh(); + $saved_route = []; $route_points = Acars::where( ['pirep_id' => $pirep->id, 'type' => AcarsType::ROUTE] - )->orderBy('created_at', 'asc')->get(); + )->orderBy('order', 'asc')->get(); foreach ($route_points as $point) { $saved_route[] = $point->name;