From 90f52bc027d5add3a8d49f688c03f2b9a31506a7 Mon Sep 17 00:00:00 2001 From: Thomas Kaul <4159106+dtslvr@users.noreply.github.com> Date: Mon, 15 Jan 2024 17:36:38 +0100 Subject: [PATCH] Refactoring --- .../src/app/benchmark/benchmark.service.ts | 11 ++++-- .../src/app/portfolio/portfolio-calculator.ts | 12 +++++-- .../exchange-rate-data.service.ts | 34 ++++++++++++------- 3 files changed, 39 insertions(+), 18 deletions(-) diff --git a/apps/api/src/app/benchmark/benchmark.service.ts b/apps/api/src/app/benchmark/benchmark.service.ts index 40fd59d9a..8430b4aa3 100644 --- a/apps/api/src/app/benchmark/benchmark.service.ts +++ b/apps/api/src/app/benchmark/benchmark.service.ts @@ -243,7 +243,7 @@ export class BenchmarkService { }); const exchangeRateAtStartDate = - exchangeRates[currentSymbolItem.currency]?.[ + exchangeRates[`${currentSymbolItem.currency}${userCurrency}`]?.[ format(startDate, DATE_FORMAT) ]; @@ -275,7 +275,9 @@ export class BenchmarkService { } const exchangeRate = - exchangeRates[format(marketDataItem.date, DATE_FORMAT)]; + exchangeRates[`${currentSymbolItem.currency}${userCurrency}`]?.[ + format(marketDataItem.date, DATE_FORMAT) + ]; const exchangeRateFactor = isNumber(exchangeRateAtStartDate) && isNumber(exchangeRate) @@ -300,7 +302,10 @@ export class BenchmarkService { ); if (currentSymbolItem?.marketPrice && !includesToday) { - const exchangeRate = exchangeRates[format(new Date(), DATE_FORMAT)]; + const exchangeRate = + exchangeRates[`${currentSymbolItem.currency}${userCurrency}`]?.[ + format(new Date(), DATE_FORMAT) + ]; const exchangeRateFactor = isNumber(exchangeRateAtStartDate) && isNumber(exchangeRate) diff --git a/apps/api/src/app/portfolio/portfolio-calculator.ts b/apps/api/src/app/portfolio/portfolio-calculator.ts index 61f6d7590..0f6667949 100644 --- a/apps/api/src/app/portfolio/portfolio-calculator.ts +++ b/apps/api/src/app/portfolio/portfolio-calculator.ts @@ -298,7 +298,8 @@ export class PortfolioCalculator { start, step, symbol, - exchangeRates: exchangeRatesByCurrency[currencies[symbol]], + exchangeRates: + exchangeRatesByCurrency[`${currencies[symbol]}${this.currency}`], isChartMode: true }); @@ -565,7 +566,11 @@ export class PortfolioCalculator { for (const item of lastTransactionPoint.items) { const marketPriceInBaseCurrency = marketSymbolMap[endDateString]?.[ item.symbol - ]?.mul(exchangeRatesByCurrency[item.currency]?.[endDateString]); + ]?.mul( + exchangeRatesByCurrency[`${item.currency}${this.currency}`]?.[ + endDateString + ] + ); const { grossPerformance, @@ -585,7 +590,8 @@ export class PortfolioCalculator { end, marketSymbolMap, start, - exchangeRates: exchangeRatesByCurrency[item.currency], + exchangeRates: + exchangeRatesByCurrency[`${item.currency}${this.currency}`], symbol: item.symbol }); diff --git a/apps/api/src/services/exchange-rate-data/exchange-rate-data.service.ts b/apps/api/src/services/exchange-rate-data/exchange-rate-data.service.ts index 9f5130183..36dd5c0a2 100644 --- a/apps/api/src/services/exchange-rate-data/exchange-rate-data.service.ts +++ b/apps/api/src/services/exchange-rate-data/exchange-rate-data.service.ts @@ -64,11 +64,12 @@ export class ExchangeRateDataService { } = {}; for (let currency of currencies) { - exchangeRatesByCurrency[currency] = await this.getExchangeRates({ - startDate, - currencyFrom: currency, - currencyTo: targetCurrency - }); + exchangeRatesByCurrency[`${currency}${targetCurrency}`] = + await this.getExchangeRates({ + startDate, + currencyFrom: currency, + currencyTo: targetCurrency + }); let previousExchangeRate = 1; @@ -82,17 +83,25 @@ export class ExchangeRateDataService { let dateString = format(date, DATE_FORMAT); // Check if the exchange rate for the current date is missing - if (isNaN(exchangeRatesByCurrency[currency][dateString])) { + if ( + isNaN( + exchangeRatesByCurrency[`${currency}${targetCurrency}`][dateString] + ) + ) { // If missing, fill with the previous exchange rate - exchangeRatesByCurrency[currency][dateString] = previousExchangeRate; + exchangeRatesByCurrency[`${currency}${targetCurrency}`][dateString] = + previousExchangeRate; - Logger.error( - `No exchange rate has been found for ${DEFAULT_CURRENCY}${currency} at ${dateString}`, - 'ExchangeRateDataService' - ); + if (currency === DEFAULT_CURRENCY) { + Logger.error( + `No exchange rate has been found for ${currency}${targetCurrency} at ${dateString}`, + 'ExchangeRateDataService' + ); + } } else { // If available, update the previous exchange rate - previousExchangeRate = exchangeRatesByCurrency[currency][dateString]; + previousExchangeRate = + exchangeRatesByCurrency[`${currency}${targetCurrency}`][dateString]; } } } @@ -249,6 +258,7 @@ export class ExchangeRateDataService { `No exchange rate has been found for ${aFromCurrency}${aToCurrency}`, 'ExchangeRateDataService' ); + return aValue; }