From c83a54d20e91b6fb425761a3337872ba5dea38ef Mon Sep 17 00:00:00 2001 From: Thomas <4159106+dtslvr@users.noreply.github.com> Date: Sun, 12 Mar 2023 11:25:16 +0100 Subject: [PATCH] Calculate exchange rate indirectly via base currency --- .../services/exchange-rate-data.service.ts | 25 +++++++++++++++++-- 1 file changed, 23 insertions(+), 2 deletions(-) diff --git a/apps/api/src/services/exchange-rate-data.service.ts b/apps/api/src/services/exchange-rate-data.service.ts index 080772eb9..78c5fdda5 100644 --- a/apps/api/src/services/exchange-rate-data.service.ts +++ b/apps/api/src/services/exchange-rate-data.service.ts @@ -183,8 +183,29 @@ export class ExchangeRateDataService { if (marketData?.marketPrice) { factor = marketData?.marketPrice; } else { - // TODO: Get from data provider service or calculate indirectly via base currency - // and market data + // Calculate indirectly via base currency + try { + const [ + { marketPrice: marketPriceBaseCurrencyFromCurrency }, + { marketPrice: marketPriceBaseCurrencyToCurrency } + ] = await Promise.all([ + this.marketDataService.get({ + dataSource, + symbol: `${this.baseCurrency}${aFromCurrency}`, + date: aDate + }), + this.marketDataService.get({ + dataSource, + symbol: `${this.baseCurrency}${aToCurrency}`, + date: aDate + }) + ]); + + // Calculate the opposite direction + factor = + (1 / marketPriceBaseCurrencyFromCurrency) * + marketPriceBaseCurrencyToCurrency; + } catch {} } }