123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172 |
- <?php
-
- namespace App\Console\Commands;
-
- use Akaunting\Money\Currency;
- use App\Contracts\CurrencyHandler;
- use App\Facades\Forex;
- use App\Models\Service\CurrencyList;
- use Illuminate\Console\Command;
-
- class InitializeCurrencies extends Command
- {
- /**
- * The name and signature of the console command.
- *
- * @var string
- */
- protected $signature = 'currency:init';
-
- /**
- * The console command description.
- *
- * @var string
- */
- protected $description = 'Initialize currencies from the API';
-
- public function __construct(private readonly CurrencyHandler $currencyService)
- {
- parent::__construct();
- }
-
- /**
- * Execute the console command.
- */
- public function handle(): void
- {
- $this->info('Fetching supported currencies from the API...');
-
- $apiSupportedCurrencies = $this->currencyService->getSupportedCurrencies();
-
- if (Forex::isDisabled()) {
- $this->error('The Currency Exchange Rate feature is disabled.');
-
- return;
- }
-
- if (empty($apiSupportedCurrencies)) {
- $this->error('Failed to fetch supported currencies from the API.');
-
- return;
- }
-
- $appSupportedCurrencies = array_keys(Currency::getCurrencies());
-
- foreach ($appSupportedCurrencies as $appSupportedCurrency) {
- $isAvailable = in_array($appSupportedCurrency, $apiSupportedCurrencies, true);
- $currencyAttributes = [
- 'code' => $appSupportedCurrency,
- 'name' => currency($appSupportedCurrency)->getName(),
- 'entity' => currency($appSupportedCurrency)->getEntity(),
- 'available' => $isAvailable,
- ];
-
- CurrencyList::updateOrCreate(
- ['code' => $appSupportedCurrency],
- $currencyAttributes
- );
- }
-
- $this->info('Successfully initialized currencies.');
- }
- }
|