diff --git a/database/seeders/CurrencySeeder.php b/database/seeders/CurrencySeeder.php new file mode 100644 index 0000000..a1eaf30 --- /dev/null +++ b/database/seeders/CurrencySeeder.php @@ -0,0 +1,40 @@ + 'EUR', + 'name' => 'Euro', + 'is_active' => true, + ], + [ + 'id' => 'USD', + 'name' => 'US Dollar', + 'is_active' => true, + ], + [ + 'id' => 'GBP', + 'name' => 'British Pound', + 'is_active' => true, + ], + ]; + + foreach ($currencies as $currency) { + Currency::firstOrCreate( + ['id' => $currency['id']], + $currency + ); + } + } +} diff --git a/database/seeders/WorldSeeder.php b/database/seeders/WorldSeeder.php new file mode 100644 index 0000000..23ccf11 --- /dev/null +++ b/database/seeders/WorldSeeder.php @@ -0,0 +1,13 @@ +call(CurrencySeeder::class); + } +} diff --git a/src/Jobs/ImportCountries.php b/src/Jobs/ImportCountries.php index 1868b61..404a88c 100644 --- a/src/Jobs/ImportCountries.php +++ b/src/Jobs/ImportCountries.php @@ -7,6 +7,7 @@ use Eclipse\World\Models\Region; use Exception; use Illuminate\Support\Carbon; +use Illuminate\Support\Facades\Http; class ImportCountries extends QueueableJob { @@ -23,10 +24,16 @@ protected function execute(): void $existingCountries = Country::withTrashed()->get()->keyBy('id'); // Load new country data - $countries = json_decode(file_get_contents('https://raw.githubusercontent.com/mledoze/countries/master/dist/countries.json'), true); + $response = Http::get('https://raw.githubusercontent.com/mledoze/countries/master/dist/countries.json'); + + if (! $response->successful()) { + throw new Exception('Failed to fetch countries data: '.$response->status()); + } + + $countries = $response->json(); if (! $countries) { - throw new Exception('Failed to fetch or parse countries data'); + throw new Exception('Failed to parse countries data'); } foreach ($countries as $rawData) { diff --git a/src/Jobs/ImportCurrencies.php b/src/Jobs/ImportCurrencies.php index 9436ed9..5f83f3d 100644 --- a/src/Jobs/ImportCurrencies.php +++ b/src/Jobs/ImportCurrencies.php @@ -5,6 +5,7 @@ use Eclipse\Common\Foundation\Jobs\QueueableJob; use Eclipse\World\Models\Currency; use Exception; +use Illuminate\Support\Facades\Http; class ImportCurrencies extends QueueableJob { @@ -18,10 +19,16 @@ protected function execute(): void $existingCurrencies = Currency::withTrashed()->get()->keyBy('id'); // Load new currency data from REST Countries API - $countries = json_decode(file_get_contents('https://raw.githubusercontent.com/mledoze/countries/master/dist/countries.json'), true); + $response = Http::get('https://raw.githubusercontent.com/mledoze/countries/master/dist/countries.json'); + + if (! $response->successful()) { + throw new Exception('Failed to fetch countries data: '.$response->status()); + } + + $countries = $response->json(); if (! $countries) { - throw new Exception('Failed to fetch or parse countries data'); + throw new Exception('Failed to parse countries data'); } $processedCurrencies = [];