<?php

declare(strict_types=1);

namespace ArtisanAir\Flight\Database\Seeders;

use ArtisanAir\Flight\Models\Airport;
use Illuminate\Database\Seeder;

class AirportSeeder extends Seeder
{
    public function run(): void
    {
        $now = now();

        $airports = [
            // Asia
            [
                'iata_code' => 'HND',
                'name' => 'Haneda Airport',
                'city' => 'Tokyo',
                'country' => 'Japan',
                'timezone' => 'Asia/Tokyo',
                'latitude' => 35.5533,
                'longitude' => 139.7811,
                'created_at' => $now,
                'updated_at' => $now,
            ],
            [
                'iata_code' => 'NRT',
                'name' => 'Narita International Airport',
                'city' => 'Tokyo',
                'country' => 'Japan',
                'timezone' => 'Asia/Tokyo',
                'latitude' => 35.7720,
                'longitude' => 140.3929,
                'created_at' => $now,
                'updated_at' => $now,
            ],
            [
                'iata_code' => 'DEL',
                'name' => 'Indira Gandhi International Airport',
                'city' => 'Delhi',
                'country' => 'India',
                'timezone' => 'Asia/Kolkata',
                'latitude' => 28.5565,
                'longitude' => 77.1000,
                'created_at' => $now,
                'updated_at' => $now,
            ],
            [
                'iata_code' => 'BOM',
                'name' => 'Chhatrapati Shivaji International Airport',
                'city' => 'Mumbai',
                'country' => 'India',
                'timezone' => 'Asia/Kolkata',
                'latitude' => 19.0896,
                'longitude' => 72.8656,
                'created_at' => $now,
                'updated_at' => $now,
            ],
            [
                'iata_code' => 'MAA',
                'name' => 'Chennai International Airport',
                'city' => 'Chennai',
                'country' => 'India',
                'timezone' => 'Asia/Kolkata',
                'latitude' => 12.9941,
                'longitude' => 80.1709,
                'created_at' => $now,
                'updated_at' => $now,
            ],
            [
                'iata_code' => 'BLR',
                'name' => 'Kempegowda International Airport',
                'city' => 'Bangalore',
                'country' => 'India',
                'timezone' => 'Asia/Kolkata',
                'latitude' => 13.1986,
                'longitude' => 77.7066,
                'created_at' => $now,
                'updated_at' => $now,
            ],
            [
                'iata_code' => 'HYD',
                'name' => 'Rajiv Gandhi International Airport',
                'city' => 'Hyderabad',
                'country' => 'India',
                'timezone' => 'Asia/Kolkata',
                'latitude' => 17.2403,
                'longitude' => 78.4294,
                'created_at' => $now,
                'updated_at' => $now,
            ],
            [
                'iata_code' => 'CCU',
                'name' => 'Netaji Subhas Chandra Bose International Airport',
                'city' => 'Kolkata',
                'country' => 'India',
                'timezone' => 'Asia/Kolkata',
                'latitude' => 22.6520,
                'longitude' => 88.4463,
                'created_at' => $now,
                'updated_at' => $now,
            ],
            [
                'iata_code' => 'AMD',
                'name' => 'Sardar Vallabhbhai Patel International Airport',
                'city' => 'Ahmedabad',
                'country' => 'India',
                'timezone' => 'Asia/Kolkata',
                'latitude' => 23.0735,
                'longitude' => 72.6347,
                'created_at' => $now,
                'updated_at' => $now,
            ],
            [
                'iata_code' => 'SIN',
                'name' => 'Singapore Changi Airport',
                'city' => 'Singapore',
                'country' => 'Singapore',
                'timezone' => 'Asia/Singapore',
                'latitude' => 1.3644,
                'longitude' => 103.9915,
                'created_at' => $now,
                'updated_at' => $now,
            ],
            [
                'iata_code' => 'ICN',
                'name' => 'Incheon International Airport',
                'city' => 'Seoul',
                'country' => 'South Korea',
                'timezone' => 'Asia/Seoul',
                'latitude' => 37.4602,
                'longitude' => 126.4407,
                'created_at' => $now,
                'updated_at' => $now,
            ],
            [
                'iata_code' => 'HKG',
                'name' => 'Hong Kong International Airport',
                'city' => 'Hong Kong',
                'country' => 'China',
                'timezone' => 'Asia/Hong_Kong',
                'latitude' => 22.3080,
                'longitude' => 113.9185,
                'created_at' => $now,
                'updated_at' => $now,
            ],
            [
                'iata_code' => 'BKK',
                'name' => 'Suvarnabhumi Airport',
                'city' => 'Bangkok',
                'country' => 'Thailand',
                'timezone' => 'Asia/Bangkok',
                'latitude' => 13.6900,
                'longitude' => 100.7501,
                'created_at' => $now,
                'updated_at' => $now,
            ],
            [
                'iata_code' => 'KUL',
                'name' => 'Kuala Lumpur International Airport',
                'city' => 'Kuala Lumpur',
                'country' => 'Malaysia',
                'timezone' => 'Asia/Kuala_Lumpur',
                'latitude' => 2.7456,
                'longitude' => 101.7072,
                'created_at' => $now,
                'updated_at' => $now,
            ],
            [
                'iata_code' => 'CGK',
                'name' => 'Soekarno-Hatta International Airport',
                'city' => 'Jakarta',
                'country' => 'Indonesia',
                'timezone' => 'Asia/Jakarta',
                'latitude' => -6.1256,
                'longitude' => 106.6558,
                'created_at' => $now,
                'updated_at' => $now,
            ],
            [
                'iata_code' => 'MNL',
                'name' => 'Ninoy Aquino International Airport',
                'city' => 'Manila',
                'country' => 'Philippines',
                'timezone' => 'Asia/Manila',
                'latitude' => 14.5086,
                'longitude' => 121.0194,
                'created_at' => $now,
                'updated_at' => $now,
            ],

            // Europe
            [
                'iata_code' => 'LHR',
                'name' => 'London Heathrow Airport',
                'city' => 'London',
                'country' => 'United Kingdom',
                'timezone' => 'Europe/London',
                'latitude' => 51.4700,
                'longitude' => -0.4543,
                'created_at' => $now,
                'updated_at' => $now,
            ],
            [
                'iata_code' => 'CDG',
                'name' => 'Charles de Gaulle Airport',
                'city' => 'Paris',
                'country' => 'France',
                'timezone' => 'Europe/Paris',
                'latitude' => 49.0097,
                'longitude' => 2.5479,
                'created_at' => $now,
                'updated_at' => $now,
            ],
            [
                'iata_code' => 'FRA',
                'name' => 'Frankfurt Airport',
                'city' => 'Frankfurt',
                'country' => 'Germany',
                'timezone' => 'Europe/Berlin',
                'latitude' => 50.0379,
                'longitude' => 8.5622,
                'created_at' => $now,
                'updated_at' => $now,
            ],
            [
                'iata_code' => 'AMS',
                'name' => 'Amsterdam Airport Schiphol',
                'city' => 'Amsterdam',
                'country' => 'Netherlands',
                'timezone' => 'Europe/Amsterdam',
                'latitude' => 52.3086,
                'longitude' => 4.7639,
                'created_at' => $now,
                'updated_at' => $now,
            ],
            [
                'iata_code' => 'MAD',
                'name' => 'Adolfo Suárez Madrid–Barajas Airport',
                'city' => 'Madrid',
                'country' => 'Spain',
                'timezone' => 'Europe/Madrid',
                'latitude' => 40.4983,
                'longitude' => -3.5676,
                'created_at' => $now,
                'updated_at' => $now,
            ],
            [
                'iata_code' => 'FCO',
                'name' => 'Leonardo da Vinci International Airport',
                'city' => 'Rome',
                'country' => 'Italy',
                'timezone' => 'Europe/Rome',
                'latitude' => 41.8003,
                'longitude' => 12.2389,
                'created_at' => $now,
                'updated_at' => $now,
            ],
            [
                'iata_code' => 'IST',
                'name' => 'Istanbul Airport',
                'city' => 'Istanbul',
                'country' => 'Turkey',
                'timezone' => 'Europe/Istanbul',
                'latitude' => 41.2751,
                'longitude' => 28.7519,
                'created_at' => $now,
                'updated_at' => $now,
            ],
            [
                'iata_code' => 'DME',
                'name' => 'Moscow Domodedovo Airport',
                'city' => 'Moscow',
                'country' => 'Russia',
                'timezone' => 'Europe/Moscow',
                'latitude' => 55.4103,
                'longitude' => 37.9026,
                'created_at' => $now,
                'updated_at' => $now,
            ],
            [
                'iata_code' => 'ZRH',
                'name' => 'Zurich Airport',
                'city' => 'Zurich',
                'country' => 'Switzerland',
                'timezone' => 'Europe/Zurich',
                'latitude' => 47.4647,
                'longitude' => 8.5492,
                'created_at' => $now,
                'updated_at' => $now,
            ],
            [
                'iata_code' => 'CPH',
                'name' => 'Copenhagen Airport',
                'city' => 'Copenhagen',
                'country' => 'Denmark',
                'timezone' => 'Europe/Copenhagen',
                'latitude' => 55.6180,
                'longitude' => 12.6508,
                'created_at' => $now,
                'updated_at' => $now,
            ],
            [
                'iata_code' => 'ARN',
                'name' => 'Stockholm Arlanda Airport',
                'city' => 'Stockholm',
                'country' => 'Sweden',
                'timezone' => 'Europe/Stockholm',
                'latitude' => 59.6498,
                'longitude' => 17.9239,
                'created_at' => $now,
                'updated_at' => $now,
            ],

            // North America
            [
                'iata_code' => 'JFK',
                'name' => 'John F. Kennedy International Airport',
                'city' => 'New York',
                'country' => 'United States',
                'timezone' => 'America/New_York',
                'latitude' => 40.6413,
                'longitude' => -73.7781,
                'created_at' => $now,
                'updated_at' => $now,
            ],
            [
                'iata_code' => 'LAX',
                'name' => 'Los Angeles International Airport',
                'city' => 'Los Angeles',
                'country' => 'United States',
                'timezone' => 'America/Los_Angeles',
                'latitude' => 33.9416,
                'longitude' => -118.4085,
                'created_at' => $now,
                'updated_at' => $now,
            ],
            [
                'iata_code' => 'ORD',
                'name' => "O'Hare International Airport",
                'city' => 'Chicago',
                'country' => 'United States',
                'timezone' => 'America/Chicago',
                'latitude' => 41.9786,
                'longitude' => -87.9048,
                'created_at' => $now,
                'updated_at' => $now,
            ],
            [
                'iata_code' => 'MIA',
                'name' => 'Miami International Airport',
                'city' => 'Miami',
                'country' => 'United States',
                'timezone' => 'America/New_York',
                'latitude' => 25.7932,
                'longitude' => -80.2906,
                'created_at' => $now,
                'updated_at' => $now,
            ],
            [
                'iata_code' => 'SFO',
                'name' => 'San Francisco International Airport',
                'city' => 'San Francisco',
                'country' => 'United States',
                'timezone' => 'America/Los_Angeles',
                'latitude' => 37.6188,
                'longitude' => -122.3750,
                'created_at' => $now,
                'updated_at' => $now,
            ],
            [
                'iata_code' => 'DFW',
                'name' => 'Dallas/Fort Worth International Airport',
                'city' => 'Dallas',
                'country' => 'United States',
                'timezone' => 'America/Chicago',
                'latitude' => 32.8968,
                'longitude' => -97.0380,
                'created_at' => $now,
                'updated_at' => $now,
            ],
            [
                'iata_code' => 'YYZ',
                'name' => 'Toronto Pearson International Airport',
                'city' => 'Toronto',
                'country' => 'Canada',
                'timezone' => 'America/Toronto',
                'latitude' => 43.6777,
                'longitude' => -79.6248,
                'created_at' => $now,
                'updated_at' => $now,
            ],
            [
                'iata_code' => 'YVR',
                'name' => 'Vancouver International Airport',
                'city' => 'Vancouver',
                'country' => 'Canada',
                'timezone' => 'America/Vancouver',
                'latitude' => 49.1967,
                'longitude' => -123.1815,
                'created_at' => $now,
                'updated_at' => $now,
            ],
            [
                'iata_code' => 'YUL',
                'name' => 'Montréal-Pierre Elliott Trudeau International Airport',
                'city' => 'Montreal',
                'country' => 'Canada',
                'timezone' => 'America/Montreal',
                'latitude' => 45.4706,
                'longitude' => -73.7407,
                'created_at' => $now,
                'updated_at' => $now,
            ],
            [
                'iata_code' => 'MEX',
                'name' => 'Benito Juárez International Airport',
                'city' => 'Mexico City',
                'country' => 'Mexico',
                'timezone' => 'America/Mexico_City',
                'latitude' => 19.4363,
                'longitude' => -99.0721,
                'created_at' => $now,
                'updated_at' => $now,
            ],

            // South America
            [
                'iata_code' => 'GRU',
                'name' => 'São Paulo/Guarulhos International Airport',
                'city' => 'São Paulo',
                'country' => 'Brazil',
                'timezone' => 'America/Sao_Paulo',
                'latitude' => -23.4356,
                'longitude' => -46.4731,
                'created_at' => $now,
                'updated_at' => $now,
            ],
            [
                'iata_code' => 'EZE',
                'name' => 'Ministro Pistarini International Airport',
                'city' => 'Buenos Aires',
                'country' => 'Argentina',
                'timezone' => 'America/Argentina/Buenos_Aires',
                'latitude' => -34.8222,
                'longitude' => -58.5358,
                'created_at' => $now,
                'updated_at' => $now,
            ],
            [
                'iata_code' => 'BOG',
                'name' => 'El Dorado International Airport',
                'city' => 'Bogotá',
                'country' => 'Colombia',
                'timezone' => 'America/Bogota',
                'latitude' => 4.7016,
                'longitude' => -74.1469,
                'created_at' => $now,
                'updated_at' => $now,
            ],
            [
                'iata_code' => 'SCL',
                'name' => 'Arturo Merino Benítez International Airport',
                'city' => 'Santiago',
                'country' => 'Chile',
                'timezone' => 'America/Santiago',
                'latitude' => -33.3928,
                'longitude' => -70.7934,
                'created_at' => $now,
                'updated_at' => $now,
            ],
            [
                'iata_code' => 'LIM',
                'name' => 'Jorge Chávez International Airport',
                'city' => 'Lima',
                'country' => 'Peru',
                'timezone' => 'America/Lima',
                'latitude' => -12.0219,
                'longitude' => -77.1143,
                'created_at' => $now,
                'updated_at' => $now,
            ],

            // Middle East
            [
                'iata_code' => 'DXB',
                'name' => 'Dubai International Airport',
                'city' => 'Dubai',
                'country' => 'United Arab Emirates',
                'timezone' => 'Asia/Dubai',
                'latitude' => 25.2532,
                'longitude' => 55.3657,
                'created_at' => $now,
                'updated_at' => $now,
            ],
            [
                'iata_code' => 'AUH',
                'name' => 'Abu Dhabi International Airport',
                'city' => 'Abu Dhabi',
                'country' => 'United Arab Emirates',
                'timezone' => 'Asia/Dubai',
                'latitude' => 24.4331,
                'longitude' => 54.6511,
                'created_at' => $now,
                'updated_at' => $now,
            ],
            [
                'iata_code' => 'DOH',
                'name' => 'Hamad International Airport',
                'city' => 'Doha',
                'country' => 'Qatar',
                'timezone' => 'Asia/Qatar',
                'latitude' => 25.2731,
                'longitude' => 51.6081,
                'created_at' => $now,
                'updated_at' => $now,
            ],
            [
                'iata_code' => 'RUH',
                'name' => 'King Khalid International Airport',
                'city' => 'Riyadh',
                'country' => 'Saudi Arabia',
                'timezone' => 'Asia/Riyadh',
                'latitude' => 24.9578,
                'longitude' => 46.6989,
                'created_at' => $now,
                'updated_at' => $now,
            ],
            [
                'iata_code' => 'JED',
                'name' => 'King Abdulaziz International Airport',
                'city' => 'Jeddah',
                'country' => 'Saudi Arabia',
                'timezone' => 'Asia/Riyadh',
                'latitude' => 21.6805,
                'longitude' => 39.1722,
                'created_at' => $now,
                'updated_at' => $now,
            ],

            // Africa
            [
                'iata_code' => 'JNB',
                'name' => 'O.R. Tambo International Airport',
                'city' => 'Johannesburg',
                'country' => 'South Africa',
                'timezone' => 'Africa/Johannesburg',
                'latitude' => -26.1392,
                'longitude' => 28.2460,
                'created_at' => $now,
                'updated_at' => $now,
            ],
            [
                'iata_code' => 'CPT',
                'name' => 'Cape Town International Airport',
                'city' => 'Cape Town',
                'country' => 'South Africa',
                'timezone' => 'Africa/Johannesburg',
                'latitude' => -33.9715,
                'longitude' => 18.6021,
                'created_at' => $now,
                'updated_at' => $now,
            ],
            [
                'iata_code' => 'CAI',
                'name' => 'Cairo International Airport',
                'city' => 'Cairo',
                'country' => 'Egypt',
                'timezone' => 'Africa/Cairo',
                'latitude' => 30.1219,
                'longitude' => 31.4056,
                'created_at' => $now,
                'updated_at' => $now,
            ],
            [
                'iata_code' => 'ADD',
                'name' => 'Bole International Airport',
                'city' => 'Addis Ababa',
                'country' => 'Ethiopia',
                'timezone' => 'Africa/Addis_Ababa',
                'latitude' => 8.9778,
                'longitude' => 38.7989,
                'created_at' => $now,
                'updated_at' => $now,
            ],
            [
                'iata_code' => 'NBO',
                'name' => 'Jomo Kenyatta International Airport',
                'city' => 'Nairobi',
                'country' => 'Kenya',
                'timezone' => 'Africa/Nairobi',
                'latitude' => -1.3192,
                'longitude' => 36.9277,
                'created_at' => $now,
                'updated_at' => $now,
            ],

            // Oceania
            [
                'iata_code' => 'SYD',
                'name' => 'Sydney Airport',
                'city' => 'Sydney',
                'country' => 'Australia',
                'timezone' => 'Australia/Sydney',
                'latitude' => -33.9399,
                'longitude' => 151.1753,
                'created_at' => $now,
                'updated_at' => $now,
            ],
            [
                'iata_code' => 'MEL',
                'name' => 'Melbourne Airport',
                'city' => 'Melbourne',
                'country' => 'Australia',
                'timezone' => 'Australia/Melbourne',
                'latitude' => -37.6690,
                'longitude' => 144.8410,
                'created_at' => $now,
                'updated_at' => $now,
            ],
            [
                'iata_code' => 'BNE',
                'name' => 'Brisbane Airport',
                'city' => 'Brisbane',
                'country' => 'Australia',
                'timezone' => 'Australia/Brisbane',
                'latitude' => -27.3842,
                'longitude' => 153.1175,
                'created_at' => $now,
                'updated_at' => $now,
            ],
            [
                'iata_code' => 'PER',
                'name' => 'Perth Airport',
                'city' => 'Perth',
                'country' => 'Australia',
                'timezone' => 'Australia/Perth',
                'latitude' => -31.9385,
                'longitude' => 115.9674,
                'created_at' => $now,
                'updated_at' => $now,
            ],
            [
                'iata_code' => 'AKL',
                'name' => 'Auckland Airport',
                'city' => 'Auckland',
                'country' => 'New Zealand',
                'timezone' => 'Pacific/Auckland',
                'latitude' => -37.0082,
                'longitude' => 174.7850,
                'created_at' => $now,
                'updated_at' => $now,
            ],
            [
                'iata_code' => 'CHC',
                'name' => 'Christchurch International Airport',
                'city' => 'Christchurch',
                'country' => 'New Zealand',
                'timezone' => 'Pacific/Auckland',
                'latitude' => -43.4894,
                'longitude' => 172.5320,
                'created_at' => $now,
                'updated_at' => $now,
            ],
        ];

        Airport::insert($airports);
    }
}
