/** * Sets exchange rates for target currency * * @param string $targetCurrency */ protected function loadExchangeRates($targetCurrency) { if (!isset($this->exchangeRates[$targetCurrency])) { $currencyRates = $this->currencyRateRepository->findBy(['currencyTo' => $targetCurrency]); if (count($currencyRates) === 0) { throw new MissingCurrencyRatesException($targetCurrency); } foreach ($currencyRates as $rate) { $this->setExchangeRate($rate, $targetCurrency); } } }
/** * Adds new rate or updates existing one * * @param string $currencyFrom * @param string $currencyTo * @param float $rate */ protected function addUpdateExchangeRate($currencyFrom, $currencyTo, $rate) { if (!in_array($currencyTo, $this->managedCurrencies)) { return false; } $exchangeRate = $this->ratesRepository->findOneBy(['currencyFrom' => $currencyFrom, 'currencyTo' => $currencyTo]); if (null === $exchangeRate) { $exchangeRate = new CurrencyRate(); $exchangeRate->setCurrencyFrom($currencyFrom); $exchangeRate->setCurrencyTo($currencyTo); $exchangeRate->setExchangeRate($rate); $this->helper->getEntityManager()->persist($exchangeRate); } else { $exchangeRate->setExchangeRate($rate); } return true; }