From 24b04dc7dbd9ba1c56fcd8a39bcdba03f4959e6d Mon Sep 17 00:00:00 2001 From: Antoine <antoine.cordier@display-interactive.com> Date: Mon, 21 Aug 2023 16:03:40 +0200 Subject: [PATCH] [GC-1266] Add test on ICAO CODE if no IATA --- Resources/config/airlines/QEE.json | 16 +++++++++++++++ src/Command/AirportChecker.php | 33 ++++++++++++++++++++++++++---- 2 files changed, 45 insertions(+), 4 deletions(-) create mode 100644 Resources/config/airlines/QEE.json diff --git a/Resources/config/airlines/QEE.json b/Resources/config/airlines/QEE.json new file mode 100644 index 0000000..19bb01d --- /dev/null +++ b/Resources/config/airlines/QEE.json @@ -0,0 +1,16 @@ +{ + "airports": [ + { + "icao": "UDYZ", + "iata": "EVN" + }, + { + "icao": "YPAD" + }, + { + "iata": "ALG" + } + ], + "locales": ["en"], + "airline": "QEE" +} diff --git a/src/Command/AirportChecker.php b/src/Command/AirportChecker.php index 017e3bd..9ed6ca4 100644 --- a/src/Command/AirportChecker.php +++ b/src/Command/AirportChecker.php @@ -9,7 +9,6 @@ use Symfony\Component\Finder\Finder; class AirportChecker extends Command { - protected function configure() { $this @@ -19,20 +18,32 @@ class AirportChecker extends Command protected function execute(InputInterface $input, OutputInterface $output) { - /** @var $finder */ $finder = new Finder(); $finder->files()->name('*.json')->in('./Resources/config/airlines'); $iataArrayMerged = []; + $icaoArrayMerged = []; + foreach ($finder as $file) { $airports = json_decode(file_get_contents($file->getPathname()), true); foreach ($airports['airports'] as $airport) { - array_push($iataArrayMerged, $airport['iata']); + if (isset($airport['iata'])) { + array_push($iataArrayMerged, $airport['iata']); + continue; + } + + if (isset($airport['icao'])) { + array_push($icaoArrayMerged, $airport['icao']); + } } } $databaseIata = $this->transformDatabaseIataToArray(); + $databaseIcao = $this->transformDatabaseIcaoToArray(); + + $airportIataDiff = array_diff($iataArrayMerged, $databaseIata); + $airportIcaoDiff = array_diff($icaoArrayMerged, $databaseIcao); - $airportDiff = array_diff($iataArrayMerged, $databaseIata); + $airportDiff = array_merge($airportIataDiff, $airportIcaoDiff); $this->printDiffMessage($airportDiff, $output); @@ -99,6 +110,20 @@ class AirportChecker extends Command return $databaseIata; } + private function transformDatabaseIcaoToArray() + { + /** SQLite query */ + $databaseIcao = []; + $connection = self::getConnection(); + $query = 'SELECT icao from ugo_airports'; + + foreach ($connection->query($query) as $row) { + $databaseIcao[] = $row[0]; + } + + return $databaseIcao; + } + private function getConnection() { $pdo = new \PDO('sqlite:' . $this->getDbFile()); -- GitLab