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 {} } }