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