Browse Source

Fix indirect calculation

pull/2026/head
Thomas 2 years ago
parent
commit
dbfc902bf9
  1. 32
      apps/api/src/services/exchange-rate-data/exchange-rate-data.service.ts

32
apps/api/src/services/exchange-rate-data/exchange-rate-data.service.ts

@ -186,28 +186,42 @@ export class ExchangeRateDataService {
factor = marketData?.marketPrice; factor = marketData?.marketPrice;
} else { } else {
// Calculate indirectly via base currency // Calculate indirectly via base currency
let marketPriceBaseCurrencyFromCurrency: number;
let marketPriceBaseCurrencyToCurrency: number;
try { try {
const [ if (this.baseCurrency === aFromCurrency) {
{ marketPrice: marketPriceBaseCurrencyFromCurrency }, marketPriceBaseCurrencyFromCurrency = 1;
{ marketPrice: marketPriceBaseCurrencyToCurrency } } else {
] = await Promise.all([ marketPriceBaseCurrencyFromCurrency = (
this.marketDataService.get({ await this.marketDataService.get({
dataSource, dataSource,
date: aDate, date: aDate,
symbol: `${this.baseCurrency}${aFromCurrency}` symbol: `${this.baseCurrency}${aFromCurrency}`
}), })
this.marketDataService.get({ )?.marketPrice;
}
} catch {}
try {
if (this.baseCurrency === aToCurrency) {
marketPriceBaseCurrencyToCurrency = 1;
} else {
marketPriceBaseCurrencyToCurrency = (
await this.marketDataService.get({
dataSource, dataSource,
date: aDate, date: aDate,
symbol: `${this.baseCurrency}${aToCurrency}` symbol: `${this.baseCurrency}${aToCurrency}`
}) })
]); )?.marketPrice;
}
} catch {}
// Calculate the opposite direction // Calculate the opposite direction
factor = factor =
(1 / marketPriceBaseCurrencyFromCurrency) * (1 / marketPriceBaseCurrencyFromCurrency) *
marketPriceBaseCurrencyToCurrency; marketPriceBaseCurrencyToCurrency;
} catch {}
} }
} }

Loading…
Cancel
Save