Browse Source

Feature: Calculate Bitcoin value based on activities in PortfolioService

pull/6029/head
Joarley Santos 2 months ago
parent
commit
f9d5a5fd55
  1. 22
      apps/api/src/app/portfolio/portfolio.service.ts

22
apps/api/src/app/portfolio/portfolio.service.ts

@ -222,6 +222,17 @@ export class PortfolioService {
const valueInBaseCurrency = const valueInBaseCurrency =
details.accounts[account.id]?.valueInBaseCurrency ?? 0; details.accounts[account.id]?.valueInBaseCurrency ?? 0;
const value = account.currency === 'BTC' || account.currency === 'bitcoin' ?
account.activities.reduce((acc, activity) => {
return activity.type === ActivityType.SELL ? acc.minus(activity.quantity) : acc.plus(activity.quantity);
}, new Big(0)).toNumber()
:
this.exchangeRateDataService.toCurrency(
valueInBaseCurrency,
userCurrency,
account.currency
);
const result = { const result = {
...account, ...account,
dividendInBaseCurrency, dividendInBaseCurrency,
@ -234,11 +245,12 @@ export class PortfolioService {
account.currency, account.currency,
userCurrency userCurrency
), ),
value: this.exchangeRateDataService.toCurrency( // value: this.exchangeRateDataService.toCurrency(
valueInBaseCurrency, // valueInBaseCurrency,
userCurrency, // userCurrency,
account.currency // account.currency
) // )
value
}; };
delete result.activities; delete result.activities;

Loading…
Cancel
Save