From 696d3343a4ce3c1926b60093614b30bf040441de Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20B=C3=B6hmer?= Date: Sun, 7 Jun 2020 22:46:32 +0200 Subject: [PATCH] Updated UpdateExchangeRatesCommand to use the new service. --- config/services.yaml | 7 ++++- src/Command/UpdateExchangeRatesCommand.php | 31 +++++----------------- 2 files changed, 13 insertions(+), 25 deletions(-) diff --git a/config/services.yaml b/config/services.yaml index 03039312..fe73dc09 100644 --- a/config/services.yaml +++ b/config/services.yaml @@ -33,6 +33,12 @@ services: resource: '../src/Controller' tags: ['controller.service_arguments'] + #################################################################################################################### + # Alias definitions + #################################################################################################################### + Swap\Swap: + alias: 'florianv_swap.swap' + #################################################################################################################### # Email #################################################################################################################### @@ -145,7 +151,6 @@ services: App\Services\ExchangeRateUpdater: arguments: $base_currency: '%partdb.default_currency%' - $swap: '@florianv_swap.swap' ################################################################################################################### # User system diff --git a/src/Command/UpdateExchangeRatesCommand.php b/src/Command/UpdateExchangeRatesCommand.php index 9f52e124..3562681f 100644 --- a/src/Command/UpdateExchangeRatesCommand.php +++ b/src/Command/UpdateExchangeRatesCommand.php @@ -43,17 +43,14 @@ declare(strict_types=1); namespace App\Command; use App\Entity\PriceInformations\Currency; -use Brick\Math\BigDecimal; +use App\Services\ExchangeRateUpdater; use function count; use Doctrine\ORM\EntityManagerInterface; use Exchanger\Exception\Exception; use function strlen; -use Swap\Builder; -use Swap\Swap; use Symfony\Component\Console\Command\Command; use Symfony\Component\Console\Input\InputArgument; use Symfony\Component\Console\Input\InputInterface; -use Symfony\Component\Console\Input\InputOption; use Symfony\Component\Console\Output\OutputInterface; use Symfony\Component\Console\Style\SymfonyStyle; @@ -63,13 +60,15 @@ class UpdateExchangeRatesCommand extends Command protected $base_current; protected $em; + protected $exchangeRateUpdater; - public function __construct(string $base_current, EntityManagerInterface $entityManager) + public function __construct(string $base_current, EntityManagerInterface $entityManager, ExchangeRateUpdater $exchangeRateUpdater) { //$this->swap = $swap; $this->base_current = $base_current; $this->em = $entityManager; + $this->exchangeRateUpdater = $exchangeRateUpdater; parent::__construct(); } @@ -78,13 +77,7 @@ class UpdateExchangeRatesCommand extends Command { $this ->setDescription('Updates the currency exchange rates.') - ->addArgument('iso_code', InputArgument::OPTIONAL | InputArgument::IS_ARRAY, 'The ISO Codes of the currencies that should be updated.') - ->addOption('service', null, InputOption::VALUE_REQUIRED, - 'Which service should be used for requesting the exchange rates (e.g. fixer). See florianv/swap for full list.', - 'exchange_rates_api') - ->addOption('api_key', null, InputOption::VALUE_REQUIRED, - 'The API key to use for the service.', - null); + ->addArgument('iso_code', InputArgument::OPTIONAL | InputArgument::IS_ARRAY, 'The ISO Codes of the currencies that should be updated.'); } protected function execute(InputInterface $input, OutputInterface $output): int @@ -93,25 +86,16 @@ class UpdateExchangeRatesCommand extends Command //Check for valid base current if (3 !== strlen($this->base_current)) { - $io->error('Choosen Base current is not valid. Check your settings!'); + $io->error('Chosen Base current is not valid. Check your settings!'); return 1; } $io->note('Update currency exchange rates with base currency: '.$this->base_current); - $service = $input->getOption('service'); - $api_key = $input->getOption('api_key'); - - //Construct Swap with the given options - $swap = (new Builder()) - ->add($service, ['access_key' => $api_key]) - ->build(); - //Check what currencies we need to update: $iso_code = $input->getArgument('iso_code'); $repo = $this->em->getRepository(Currency::class); - $candidates = []; if (! empty($iso_code)) { $candidates = $repo->findBy(['iso_code' => $iso_code]); @@ -125,8 +109,7 @@ class UpdateExchangeRatesCommand extends Command foreach ($candidates as $currency) { /** @var Currency $currency */ try { - $rate = $swap->latest($currency->getIsoCode().'/'.$this->base_current); - $currency->setExchangeRate(BigDecimal::of($rate->getValue())); + $this->exchangeRateUpdater->update($currency); $io->note(sprintf('Set exchange rate of %s to %f', $currency->getIsoCode(), $currency->getExchangeRate()->toFloat())); $this->em->persist($currency);